yngc0der/bitrix-rabbitmq

该软件包已被废弃,不再维护。未建议替代软件包。

安装: 108

依赖项: 0

建议者: 0

安全: 0

星标: 12

关注者: 1

分支: 473

类型:bitrix-d7-module

v0.1.0 2020-12-07 20:07 UTC

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.phpbitrix/.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 fabric
  • rabbitmq:stdin-producer 执行从标准输入读取数据的生产者

适配Bitrix

  • 连接(流、套接字、懒加载、懒加载套接字)
  • 连接工厂
  • 绑定
  • 生产者
  • 消费者
  • 部分持有者
  • 回退生产者
  • 多消费者
  • 动态消费者
  • 批量消费者
  • 匿名消费者
  • Rpc客户端
  • Rpc服务器
  • 日志通道

致谢

模块和文档基于RabbitMqBundle。您也可以在那里找到关于其使用的详细信息。