vladmeh / rabbitmq-client
Laravel RabbitMQ 客户端
2.0.3
2021-02-11 11:38 UTC
Requires
- php: ^7.2.5
- ext-json: *
- ext-simplexml: *
- php-amqplib/php-amqplib: ^2.12
Requires (Dev)
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^8.5|^9.3
README
vladmeh/rabbitmq-client
用于使用 Laravel 框架 发布和消费 RabbitMQ 消息的 php-amqplib 库包装器
特性
- php v7.*
- php-amqplib v2.12
- Laravel 从 v6.* 及以上版本
PHP8.0 支持 将在 php-amqplib 更新到下一个主要版本 3.0 后提供。(php-amqplib/php-amqplib#858)
版本兼容性
安装
Composer
$ composer require vladmeh/rabbit-client
或者将以下内容添加到 composer.json 中的 requirement 部分
{ "require": { "vladmeh/rabbitmq-client": "^2.*" } }
Laravel 在安装时会自动注册服务提供者 (Vladmeh\RabbitMQ\RabbitMQClientProvider) 和门面
配置
将以下属性添加到 .env 中,并使用适当的值
RABBITMQ_HOST=localhost RABBITMQ_PORT=5672 RABBITMQ_USER=guest RABBITMQ_PASSWORD=guest
如果您需要高级配置属性,运行
$ php artisan vendor:publish --tag=rabbit
此命令将创建一个配置文件 \config\rabbit.php
集成
生产者
在现有队列中发布消息
Rabbit::publish('message', '', 'queue-name');
在现有交换机中发布消息
Rabbit::publish('message', 'exchange-name', 'routing-key');
使用自定义设置发布消息
Rabbit::publish('message', 'amq.fanout', '', [ 'hosts' => [ 'vhosts' => 'vhost3' ], 'message' => [ 'content_type' => 'application/json', ], 'exchange_declare' => [ 'type' => 'fanout', 'auto_delete' => true, ] ]);
所有默认设置都定义在
\config\rabbit.php
中。
消费者
消费现有队列中的消息
Rabbit::consume('queue-name', function (AMQPMessage $msg) { $msg->ack(); var_dump($msg->body); if ($msg->getMessageCount() === null) { $msg->getChannel()->basic_cancel($msg->getConsumerTag()); } });
RPC 客户端
$response = Rabbit::rpc('message', 'queue-name', ['connection' => [ 'read_write_timeout' => 10.0, 'channel_rpc_timeout' => 10.0 ]]); var_dump($response);