hellofresh/reagieren

该软件包已被废弃,不再维护。未建议替代软件包。

消息代理的一组适配器。

v0.6.0 2016-04-19 14:13 UTC

README

Codacy Badge Codacy Badge

Reagieren 是多个不同队列系统的一组适配器。

目前很难有一个统一的接口来访问 RabbitMQ、ApacheKafka、IronMQ 等... 为什么不只有一个通用接口并实现遵循该接口的适配器呢?这就是这个库的主要概念。

在哪里可以使用它?

任何地方,这正是它的美妙之处,您不需要依赖于庞大的框架或任何其他组件。将其视为访问消息代理的统一方式。

如何使用它?

查看这个生产者

use HelloFresh\Reagieren\MessageBroker\RabbitMQ\PHPAmqp\Producer;

(new Producer('127.0.0.1', 5672, 'guest', 'guest'))->produce('example', 'Hello world this is a message');

echo 'Message sent!', PHP_EOL;

现在查看这个消费者

use HelloFresh\Reagieren\Message;
use HelloFresh\Reagieren\MessageBroker\RabbitMQ\PHPAmqp\Consumer;

$consumer = new Consumer('127.0.0.1', 5672, 'guest', 'guest');

$callback = function (Message $message) {
    echo 'Received ', $message->getPayload(), PHP_EOL;
};

$consumer->consume(
    'example',
    $callback
);

echo 'Listening...', PHP_EOL;

正如您所看到的,它只是一个适配器,将抽象出设置特定技术问题的所有复杂性。例如,要将某些内容放入 Kafka 队列,我们需要

  1. 设置消费者
  2. 添加代理
  3. 创建主题
  4. 选择分区
  5. 发送负载

但是您不需要关心分区、主题、队列平衡,这真是太棒了!

向多个代理生产

您可以使用 Composite\Producer 向多个代理生产消息,请看这个示例

use HelloFresh\Reagieren\MessageBroker\Composite\Producer;

//... setup RabbitMQ broker
$rabbitProducer = ...;

//... setup Kafka broker
$kafkaBroker = ...;

$configs = [
    'kafka_php' => [
        'topic' => 'example_topic'
    ],
    'rabbit_mq' => [
        'topic' => 'example_exchange'
    ]
];

(new Producer($rabbitProducer, $kafkaBroker))->produce($payload, $configs);

echo 'Message sent!', PHP_EOL;