panace9i / rabbitmq
此包的最新版本(dev-master)没有可用的许可信息。
队列管理器。基于AMQ协议。
dev-master
2018-04-28 12:46 UTC
Requires
- php: >=5.6.0
- php-amqplib/php-amqplib: 2.6.3
This package is not auto-updated.
Last update: 2024-09-29 05:01:57 UTC
README
通用信息
该库包含用于操作RabbitMQ队列管理器的基功能。
变更
依赖关系
- PHP 5.6.0及以上
安装
使用Composer
使用以下结构创建或更新现有的依赖关系文件:
{
"require": {
"panace9i/rabbitmq": "dev-master"
}
}
执行以下命令:
composer install
示例
同步模式
生产者
标准调用
require "vendor/autoload.php";
use Panace9i\Queue\RabbitMQ\Producer\Adapter\Sync;
Panace9i\Queue\RabbitMQ\Config\Config::init()
->setHost('localhost')
->setPort(5672)
->setUser('guest')
->setPassword('guest');
$entity = new Sync();
$result = $entity->execute(<request_data_as_string>, <queue_name>);
...
使用工厂
<?php
require "vendor/autoload.php";
use Panace9i\Queue\RabbitMQ\Producer\Factory AS ProducerFactory;
Panace9i\Queue\RabbitMQ\Config\Config::init()
->setHost('localhost')
->setPort(5672)
->setUser('guest')
->setPassword('guest');
$entity = ProducerFactory::getInstance(ProducerFactory::ADAPTER_SYNC);
$result = $entity->execute(<request_data_as_string>, <queue_name>);
...
消费者
标准调用
<?php
require "vendor/autoload.php";
use Panace9i\Queue\RabbitMQ\Consumer\Adapter\Sync;
use Panace9i\Queue\RabbitMQ\Handler\HandlerAbstract;
Panace9i\Queue\RabbitMQ\Config\Config::init()
->setHost('localhost')
->setPort(5672)
->setUser('guest')
->setPassword('guest');
class SyncTest extends HandlerAbstract
{
public function listen($request)
{
$params = $request->body;
...
return $this->reply(<response_data_as_string>, $request);
}
}
$entity = new Sync();
$entity->listen(<queue_name>, [new SyncTest, 'listen']);
使用工厂
require "vendor/autoload.php";
use Panace9i\Queue\RabbitMQ\Consumer\Factory AS ConsumerFactory;
use Panace9i\Queue\RabbitMQ\Handler\HandlerAbstract;
Panace9i\Queue\RabbitMQ\Config\Config::init()
->setHost('localhost')
->setPort(5672)
->setUser('guest')
->setPassword('guest');
class SyncTest extends HandlerAbstract
{
public function listen($request)
{
$params = $request->body;
...
return $this->reply(<response_data_as_string>, $request);
}
}
$entity = ConsumerFactory::getInstance(ConsumerFactory::ADAPTER_SYNC);
$entity->listen(<queue_name>, [new SyncTest, 'listen']);
异步模式
生产者
标准调用
require "vendor/autoload.php";
use Panace9i\Queue\RabbitMQ\Producer\Adapter\Async;
Panace9i\Queue\RabbitMQ\Config\Config::init()
->setHost('localhost')
->setPort(5672)
->setUser('guest')
->setPassword('guest');
$entity = new Async();
$result = $entity->execute(<request_data_as_string>, <queue_name>);
...
使用工厂
require "vendor/autoload.php";
use Panace9i\Queue\RabbitMQ\Producer\Factory AS ProducerFactory;
Panace9i\Queue\RabbitMQ\Config\Config::init()
->setHost('localhost')
->setPort(5672)
->setUser('guest')
->setPassword('guest');
$entity = ProducerFactory::getInstance(ProducerFactory::ADAPTER_ASYNC);
$entity->execute(<request_data_as_string>, <queue_name>);
...
消费者
标准调用
require "vendor/autoload.php";
use Panace9i\Queue\RabbitMQ\Consumer\Adapter\Async;
use Panace9i\Queue\RabbitMQ\Handler\HandlerAbstract;
Panace9i\Queue\RabbitMQ\Config\Config::init()
->setHost('localhost')
->setPort(5672)
->setUser('guest')
->setPassword('guest');
class AsyncTest extends HandlerAbstract
{
public function listen($request)
{
$params = $request->body;
...
return $this->reply(<response_data_as_string>, $request);
}
}
$entity = new Async();
$entity->listen(<queue_name>, [new AsyncTest, 'listen']);
使用工厂
require "vendor/autoload.php";
use Panace9i\Queue\RabbitMQ\Consumer\Factory AS ConsumerFactory;
use Panace9i\Queue\RabbitMQ\Handler\HandlerAbstract;
Panace9i\Queue\RabbitMQ\Config\Config::init()
->setHost('localhost')
->setPort(5672)
->setUser('guest')
->setPassword('guest');
class AsyncTest extends HandlerAbstract
{
public function listen($request)
{
$params = $request->body;
...
return $this->reply(<response_data_as_string>, $request);
}
}
$entity = ConsumerFactory::getInstance(ConsumerFactory::ADAPTER_ASYNC);
$entity->listen(<queue_name>, [new AsyncTest, 'listen']);