alive2212/laravel-amqp

{这是php-amqplib包装器的anik/amqp包的分支,简化了RabbitMQ的使用。轻松使用RabbitMQ的方式}

1.5.4 2021-01-18 11:51 UTC

This package is auto-updated.

Last update: 2024-09-18 19:59:30 UTC


README

这是为了我们的使用而 fork anik/amqp。在这个包中,我们将 'resolveConnectionName' 和 'getConnection' 方法更改为公共方法,以便自定义我们的通道、队列和交换。衷心感谢 anik/amqp anik/amqp

anik/amqp 是一个php-amqplib包装器,简化了RabbitMQ的使用。轻松使用RabbitMQ的方式。

您可以使用此包与以下内容一起使用

需求

此包需要以下内容

  • php >= 7.0
  • ext-bcmath
  • ext-sockets

安装

该包与Laravel、Lumen和Laravel zero一起工作。通过composer安装。

composer require anik/amqp

对于Laravel

服务提供程序将自动注册。或者您可以在您的 config/app.php 提供者数组中手动添加服务提供程序

'providers' => [
    /// ... 
    Anik\Amqp\ServiceProviders\AmqpServiceProvider::class,
]
  • 使用以下命令添加配置文件 amqp.php 到您的配置目录。
php artisan vendor:publish --provider="Anik\Amqp\ServiceProviders\AmqpServiceProvider"

对于Lumen

  • 在您的 bootstrap/app.php 文件中添加服务提供程序。
$app->register(Anik\Amqp\ServiceProviders\AmqpServiceProvider::class);
  • 通过从 vendor/anik/amqp/src/config/amqp.php 复制它,将配置 amqp.php 添加到您的配置目录。别忘了在您的 bootstrap/app.php 中添加 $app->configure('amqp');

注意: 对于Lumen,您不需要启用Facade。

对于Laravel Zero

  • 在您的 config/app.php 提供者数组中添加提供程序。
'providers' => [
    /// ... 
    Anik\Amqp\ServiceProviders\AmqpServiceProvider::class,
]
  • 通过从 vendor/anik/amqp/src/config/amqp.php 复制它,将配置 amqp.php 添加到您的配置目录。

用法

  • 要发布消息
<?php
// AmqpManager::publish($msg, $routing, $config);
app('amqp')->publish('Message to direct exchange', 'routing-key', [
    'exchange' => [
        'type'    => 'direct',
        'name'    => 'direct.exchange',
    ],
]);
  • 要消费消息
<?php
use Anik\Amqp\ConsumableMessage;

// AmqpManager::consume($consumerHandler, $bindingKey, $config);
app('amqp')->consume(function (ConsumableMessage $message) {
    echo $message->getStream() . PHP_EOL;
    $message->getDeliveryInfo()->acknowledge();
}, 'routing-key', [
    'connection' => 'my-connection-name',
    'exchange'   => [
        'type'    => 'direct',
        'name'    => 'direct.exchange',
    ],
    'queue' => [
        'name'         => 'direct.exchange.queue',
        'declare'      => true,
        'exclusive'    => false,
    ],
    'qos' => [
        'enabled'            => true,
        'qos_prefetch_count' => 5,
    ],
]);

文档

此包的完整文档已撰写在 这篇文章中

问题 & PR

人非圣贤,孰能无过。

  • 如果该包生成任何问题,请报告。提及重现步骤。
  • 如果您的PR丰富了该包或解决了任何现有问题,我会将其合并。