belamov/laravel-rabbitmq-listener

此包已被放弃,不再维护。未建议替代包。

此包允许您通过 artisan 命令监听 RabbitMQ 事件

1.0.0 2018-07-19 06:58 UTC

This package is auto-updated.

Last update: 2020-04-07 22:45:53 UTC


README

此包为您提供了 artisan 命令,用于监听来自各个队列的 RabbitMQ 事件。

基本用法

1) 配置

安装包后,使用 php artisan vendor:publish 命令发布其配置。

在您的配置文件夹中,根据需要自定义 rabbitmq_listener.php 文件。

可用的配置参数包括

  • events - 您希望监听哪些事件以及每个事件由哪个类负责
  • ignored_events - 您希望忽略哪些事件
  • queues - 您希望监听哪些队列
  • reject_events - 确定您是否想拒绝传入的事件(这在调试期间很有用)
  • acknowledge_events - 确定您是否想确认事件(这在调试期间很有用)

要连接到 RabbitMQ,请将以下参数添加到您的 .env 文件中

  • RABBITMQ_LISTENER_HOST
  • RABBITMQ_LISTENER_PORT
  • RABBITMQ_LISTENER_USER
  • RABBITMQ_LISTENER_PASSWORD
  • RABBITMQ_LISTENER_VHOST

2) 实现 abstract event parser

在您的应用程序中,必须创建一个扩展 Belamov\RabbitMQListener\AbstractEventParser 类的类

此抽象类包含以下方法

abstract public function setEventPayload(string $payload);

abstract public function getEventName();

abstract public function getEventPayload();

setEventPayload($payload) 在创建事件解析器时被调用。 $payload 是来自 RabbitMQ 事件的字符串。

getEventName() 用于确定将使用哪个事件处理器。如果您只有一种类型的事件,只需使其返回特定的值,然后在 rabbitmq_listener.php 文件中的 events 参数中进行配置即可

getEventPayload() 在实例化事件处理器时使用。返回的值注入到处理器的构造函数中。

创建解析器类后,您应将其注册到您的 appServiceProvider.php 文件中。

只需将以下代码添加到 register() 方法中

$this->app->bind(
    'Belamov\RabbitMQListener\AbstractEventParser',
    'Your\Namespace\<Your class name>'
);

3) 添加您的事件处理器

为了处理事件,创建扩展 Belamov\RabbitMQListener\EventHandlers\EventHandler 类的类

此类需要从您的 getEventPayload() 方法返回的有效负载

process() 方法可以返回一些信息,当您处理事件时将在控制台返回

您还可以在 process 方法中抛出 Belamov\RabbitMQListener\Exceptions\EventParsingException。如果抛出,则事件将被拒绝而不会重新调度(如果您在配置文件中将 reject_events 设置为 true)

4) 运行命令

运行 php artisan rabbitmq:listen 命令。您还可以将此进程放在 supervisor 中,以便不断重新运行。