small/broker-client

该包已被弃用且不再维护。未建议替代包。

在 OpenSwoole 环境中实现通用消息代理消费者和生成器

0.1 2023-10-21 21:58 UTC

This package is auto-updated.

Last update: 2024-04-30 06:34:41 UTC


README

small-borker-client-extended.png

此库是消息代理的通用客户端。

支持的消息代理

  • RabbitMq

生成消息

创建一个生成器池以发送消息

$numProducers = 10;
$pool = new \Small\SwoolePatterns\Pool\Pool(
    new \Small\BrokerClient\Manager\RabbitMqProducerManager(
        $config = new \Small\BrokerClient\Config\RabbitMqConfig(
            'rabbitmq.server',
            'guest',
            'guest',
        ),
        $topic ='test',
    ), $numProducers
);

然后使用池

$message = 'This is a test';

// Get producer
/** @var \Small\BrokerClient\Producer\RabbitMqProducer $producer */
$producer = $pool->get();

// Publish message
$producer->publish(
    new Small\BrokerClient\Message\BasicEnvelop($message)
);

// Don't forget to release producer
$pool->put($producer);

消费消息

定义一个用于消费消息的类

class Consumer extends \Small\BrokerClient\Consumer\AbstractRabbitMqConsumer
{

    public string $test;

    protected function execute(\Small\BrokerClient\Message\AbstractEnvelop $envelop): bool
    {

        $this->test = $envelop->getStringMessage();

        return true;

    }


}

并运行消费

$munMessagesToTreat = 10;
(new Consumer())
    ->consume($config, $topic, 10)
;

使用注册表简化生成器管理

// Create registry
$registry = new \Small\BrokerClient\Registry\ProducerPoolRegistry();

// Register producer
$registry->createPool(
    'testProducer'
    new \Small\BrokerClient\Config\RabbitMqConfig(
        'rabbitmq.server',
        'guest',
        'guest',
    ), 'testTopic',
    $numConnections = 20,
);

// Use producer
$producer = $registry->getPool('testProducer')->get();
$producer->publish(
    new Small\BrokerClient\Message\BasicEnvelop(
        'this is a test'
    )
);
$registry->getPool('testProducer')->put($producer);