hellofresh / reagieren
该软件包已被废弃,不再维护。未建议替代软件包。
消息代理的一组适配器。
v0.6.0
2016-04-19 14:13 UTC
Requires
- php: >=5.4.0
- easyframework/collections: v5.0.0
Requires (Dev)
- codacy/coverage: dev-master
- nmred/kafka-php: ^0.1.5
- php-amqplib/php-amqplib: 2.6.*
- phpunit/phpunit: ~4.8
Suggests
- nmred/kafka-php: Required to use the KafkaPHP Adapter
- php-amqplib/php-amqplib: Required to use the RabbitMQ Adapter
This package is not auto-updated.
Last update: 2021-05-15 00:04:48 UTC
README
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 队列,我们需要
- 设置消费者
- 添加代理
- 创建主题
- 选择分区
- 发送负载
但是您不需要关心分区、主题、队列平衡,这真是太棒了!
向多个代理生产
您可以使用 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;