kontoulis / rabbitmq-laravel
RabbitMQ 代理用于 Laravel
Requires
- php: >=5.3.0
- illuminate/support: ~5.1
- php-amqplib/php-amqplib: 2.6.*
Requires (Dev)
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-28 18:58:26 UTC
README
安装
通过 Composer
$ composer require kontoulis/rabbitmq-laravel
将服务提供者添加到 config/app.php
Kontoulis\RabbitMQLaravel\RabbitMQLaravelServiceProvider::class,
将 RabbitMQ 门面添加到 config/app.php
'RabbitMQ' => Kontoulis\RabbitMQLaravel\Facades\RabbitMQ::class,
发布配置文件,并在需要时在 config/rabbitmq-laravel.php 中编辑它
$ php artisan vendor:publish
使用方法
- 路由键/队列名称
默认路由键可以在配置文件中设置,或者使用 env("APP_NAME")."_queue"。此外,大多数方法都接受参数 $routingKey
,可以覆盖默认值。
RabbitMQ::setRoutingKey("myRoutingKey/queueName");
- 交换
如果您没有设置交换,将使用默认的 ''
交换。如果您设置了一个,请确保在 RabbitMQ 系统中设置了绑定。如果您不熟悉交换,可能不需要设置。
RabbitMQ::setExchange("myExchange")'
您可以使用 RabbitMQ 门面执行如https://github.com/php-amqplib/php-amqplib/blob/master/PhpAmqpLib/Channel/AMQPChannel.php中所示的操作。基本上,RabbitMQ 门面使用 Broker 类,该类是 AMQPChannel 的扩展。
- 发布
// Single message $msg = [ "key1" => "value1", "key2" => "value2" ]; RabbitMQ::publishMesssage($msg); // OR RabbitMQ::publishMessage($msg, "myRoutingKey"); // Batch publishing $messages = [ [ "messsage_1_key1" => "value1", "messsage_1_key2" => "value2" ], [ "messsage_2_key1" => "value1", "messsage_2_key2" => "value2" ] ]; RabbitMQ::publishBatch($messages); // OR RabbitMQ::publishBatch($messages, "myRoutingKey");
- 消费队列
为了消费队列,您可以使用 Facade 中的 AmqpChannel,或者使用更好的 QueueHandlers 方法进行管理。一个 QueueHandler 应该扩展 Kontoulis\RabbitMQLaravel\Handlers\Handler 类,内置的 ListenToQueue 方法接受一个处理队列消息的处理程序数组。如果数组中存在多个处理程序,某些 Handler 的返回值将在前一个处理程序失败时使用后续的 QueueHandlers。还有一个 Kontoulis\RabbitMQLaravel\Handlers\Handler\DefaultHandler 类作为示例和/或调试处理程序。
namespace Kontoulis\RabbitMQLaravel\Handlers; use Kontoulis\RabbitMQLaravel\Message\Message; /** * Class DefaultHandler * @package Kontoulis\RabbitMQLaravel\Handlers */ class DefaultHandler extends Handler{ /** * Tries to process the incoming message. * @param Message $msg * @return int One of the possible return values defined as Handler * constants. */ public function process(Message $msg) { return $this->handleSuccess($msg); } /** * @param $msg * @return int */ protected function handleSuccess($msg) { var_dump($msg); /** * For more Handler return values see the parent class */ return Handler::RV_SUCCEED_STOP; } }
要监听队列,您必须将处理程序数组传递给方法
$handlers = ["\\App\\QueueHandlers\\MyHandler"]; \RabbitMQ::listenToQueue($handlers);
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 LICENCE.md。