vladmeh/rabbitmq-client

Laravel RabbitMQ 客户端

2.0.3 2021-02-11 11:38 UTC

This package is auto-updated.

Last update: 2024-09-11 19:32:20 UTC


README

Build Status Codacy Badge StyleCI Latest Stable Version Total Downloads License

vladmeh/rabbitmq-client

用于使用 Laravel 框架 发布和消费 RabbitMQ 消息的 php-amqplib 库包装器

特性

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);