panace9i/rabbitmq

此包的最新版本(dev-master)没有可用的许可信息。

队列管理器。基于AMQ协议。

dev-master 2018-04-28 12:46 UTC

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']);