monsieurbiz / amqp
在运行有 Magento 2 的电子商务中使用 RabbitMQ 的强大功能。
dev-master
2017-12-17 17:32 UTC
Requires
- php: ~7.0.0
- magento/framework: 100.0.*|100.1.*
- php-amqplib/php-amqplib: ^2.6
This package is auto-updated.
Last update: 2024-08-29 04:54:18 UTC
README
在运行有 Magento 2 的电子商务中使用 RabbitMQ 的强大功能。
安装
使用 composer: composer require monsieurbiz/amqp
。
如果您想使用延迟消息,那么您必须在 RabbitMQ 实例上安装[延迟消息插件][https://github.com/rabbitmq/rabbitmq-delayed-message-exchange]。
创建一个交换机
magento monsieurbiz:amqp:exchange:create consume-me
交换机名称为 consume-me
。
您还可以使用一个延迟交换机
magento monsieurbiz:amqp:exchange:create --delayed consume-me
您可以一次创建多个交换机
magento monsieurbiz:amqp:exchange:create first-exchange-name second-exchange-name
消费一个队列
您必须创建一个消费者/工作者。
查看 Console/Command/SampleCommand.php
,它是一个基本的消费者。
在一个交换机中发送消息
假设 $amqp
是 \MonsieurBiz\Amqp\Helper\Amqp
的一个实例。
直接消息
$amqp->sendMessage( 'consume-me', ['my message content'] );
延迟消息
您需要在 RabbitMQ 实例上安装延迟消息插件。
$amqp->sendMessage( 'consume-me', ['my message content'], [ 'application_headers' => new AMQPTable([ 'x-delay' => 5000 // 5 seconds of delay ]), ] );
RPC
假设 $rpc
是 \MonsieurBiz\Amqp\Helper\Rpc
的一个实例。
直接请求
发送请求到代理并立即获取响应
$response = $rpc->directRequest( 'consume-me', ['my message content'] ); echo $response; // ["my message content"]
批量消息
在发送批量之前,您应该了解 RPC 的工作方式。
别忘了保存每个请求的相关标识符。
$c1 = $rpc->request('consume-me', ['my first message']); $c2 = $rpc->request('consume-me', ['my second message']); $responses = $rpc->getResponses(); var_dump($responses[$c1]); // string(20) "["my first message"]" var_dump($responses[$c2]); // string(21) "["my second message"]"
消费者运行得越快,您就会得到越快的响应。
LICENSE
(c) Monsieur Biz opensource@monsieurbiz.com
有关完整的版权和许可信息,请参阅与源代码一起分发的 LICENSE 文件。