yngc0der / bitrix-rabbitmq
该软件包已被废弃,不再维护。未建议替代软件包。
v0.1.0
2020-12-07 20:07 UTC
Requires
- php: ^7.1.3
- composer/installers: ^1.9.0
- php-amqplib/php-amqplib: ^2.12.1
- psr/log: ^1.1.3
This package is auto-updated.
Last update: 2023-12-08 02:26:21 UTC
README
关于项目
模块包括在您的php应用程序中通过RabbitMQ使用php-amqplib进行消息交换。
软件包实现了Thumper库中的消息交换模板,使得从您的控制器发布RabbitMQ中的消息变得非常简单
use Bitrix\Main\DI\ServiceLocator; $msg = ['user_id' => 1235, 'image_path' => '/path/to/new/pic.png']; ServiceLocator::getInstance()->get('rabbitmq.upload_picture_producer')->publish(serialize($msg));
要从队列upload_pictures中获取50条消息,您只需启动监听器
use Bitrix\Main\DI\ServiceLocator; $consumer = ServiceLocator::getInstance()->get('rabbitmq.upload_picture_consumer'); $consumer->consume(50);
以下示例需要已启动的RabbitMQ服务器。
最小要求
php-7.1.3或更高版本- 模块
main v20.5.400或更高版本
安装
使用包管理器composer下载包,或手动下载
$ composer require yngc0der/bitrix-rabbitmq
在网站的行政界面中安装模块 "yngc0der.rabbitmq",网址为 bitrix/admin/partner_modules.php
在您的 init.php 中添加以下代码
use Bitrix\Main\Loader; use Bitrix\Main\DI\ServiceLocator; if (Loader::includeModule('yngc0der.rabbitmq')) { ServiceLocator::getInstance()->get('rabbitmq.service_loader')->load(); }
使用
配置与父包相同。通过编辑文件 bitrix/.settings.php 和 bitrix/.settings_extra.php 进行设置
return [ 'rabbitmq' => [ 'value' => [ 'connections' => [ 'default' => [ 'host' => '172.17.0.2', 'port' => 5672, 'user' => 'guest', 'password' => 'guest', 'vhost' => '/', 'lazy' => false, 'connection_timeout' => 3.0, 'read_write_timeout' => 3.0, 'keepalive' => false, 'heartbeat' => 0, 'use_socket' => true, ], ], 'producers' => [ 'upload_picture' => [ 'connection' => 'default', 'exchange_options' => [ 'name' => 'upload_picture', 'type' => 'direct', ], ], ], 'consumers' => [ 'upload_picture' => [ 'connection' => 'default', 'exchange_options' => [ 'name' => 'upload_picture', 'type' => 'direct', ], 'queue_options' => [ 'name' => 'upload_picture', ], 'callback' => 'UploadPictureConsumer', ], ], ], 'readonly' => false, ], ];
消息处理器的示例
// UploadPictureConsumer.php use Yngc0der\RabbitMq\RabbitMq\ConsumerInterface; use PhpAmqpLib\Message\AMQPMessage; class UploadPictureConsumer implements ConsumerInterface { public function execute(AMQPMessage $msg) { echo ' [x] Received ', $msg->body, "\n"; } }
与CLI集成
如果安装了模块yngc0der.cli,您将可以使用一些简化操作的命令
rabbitmq:consumer执行消费者rabbitmq:delete删除消费者的队列rabbitmq:purge清空消费者的队列rabbitmq:setup-fabric设置Rabbit MQ fabricrabbitmq:stdin-producer执行从标准输入读取数据的生产者
适配Bitrix
- 连接(流、套接字、懒加载、懒加载套接字)
- 连接工厂
- 绑定
- 生产者
- 消费者
- 部分持有者
- 回退生产者
- 多消费者
- 动态消费者
- 批量消费者
- 匿名消费者
- Rpc客户端
- Rpc服务器
- 日志通道
致谢
模块和文档基于RabbitMqBundle。您也可以在那里找到关于其使用的详细信息。