rocketslab / rabbitmq-actions

为Laravel的vladimir-yuldashev RabbitMQ队列提供动作包装

0.1.1 2022-06-18 18:18 UTC

This package is auto-updated.

Last update: 2024-09-18 23:31:40 UTC


README

此包是vladimir-yuldashev/rabbitmq-queue-laravel的包装。

添加了使用RabbitMQ/AMQP协议生产和消费消息的新功能。

葡萄牙语版本

安装和需求

需求

  • PHP 8.0 +
  • Laravel 8.0 +
  • RabbitMQ驱动程序为Laravel Queue 12.0+

使用Composer安装此包

composer require rocketslab/rabbitmq-actions

配置Laravel Queue的RabbitMQ驱动程序

遵循vladimir-yuldashev/rabbitmq-queue-laravel的安装说明。

如何在RLQ文档中配置yuldashev/rabbitmq-queue-laravel

发布配置

php artisan vendor:publish --provider=RocketsLab\\RabbitMQActions\\RabbitMQActionsServiceProvider

默认动作命名空间是App\RabbitMQ\Actions,将动作保存在app/RabbitMQ/Actions文件夹中。您可以通过namespace配置来更改此设置。例如

config/rabbitmq-actions.php

    ...
    'namespace' => 'MyDomain\\Actions'
    ...

当创建新动作时,这些动作将保存在app/MyDomain/Actions目录中,并且您的动作命名空间将更改为App\MyDomain\Actions

创建动作

创建此包的动机是为了找到一种简化通过RabbitMQ发送和接收消息的方法。我发现实现这一目标的一种方法就是使用动作来定义从生产者发送并被消费者作为动作处理的消息类型。

要创建一个动作,请使用artisan make:rmq-action命令。

php artisan make:rmq-action MyAction

动作文件看起来像这样

namespace App\RabbitMQ\Actions;

use RocketsLab\RabbitMQActions\Contracts\Action;

class MyAction implements Action
{
    /**
     * Handles the message data
     *
     * @param mixed $data
     *
     */
    public function handle(mixed $data)
    {
        // Process the message data from broker
    }
}

消息数据内容在Action处理方法中传递。

动作会自动注册到Laravel容器中。这种行为会在消费者接收到消息时立即启动动作。

生产消息

安装此包并将应用程序配置为作为生产者发送消息非常简单。此包的ProducerMessage类有一个名为send的单个方法,它接受三个参数:$action$data和一个可选的$queue

action参数是动作的名称,它将消费者应用程序中动作的名称进行翻译。

data参数是要发送给消费者的内容数据。

queue参数是队列的名称。默认为Laravel队列default

例如:ProduceMessage::send('my-action', 'hello')my-action是消费者自动注册的MyAction类。

自定义动作

默认动作名称是动作类名称的kebab形式。

但有时您可能想更多地控制动作的名称。要自定义动作“键”,请在配置文件中将此选项注册到custom_actions选项中。

config/rabbitmq-actions.php

    ...
    'custom_actions' => [
        'hello-action' => MyAction::class
    ];
    ...

在生产者应用程序中

    ProducerMessage::send('hello-action', 'world!');

在消费者应用程序中

    MyAction handle method its called

目前,一旦使用此选项,自动注册将被禁用,您必须在这里注册所有动作。

路线图

这是一个正在进行中的项目。将来可以创建更多功能。

感谢!

请不要忘记在这里留下星标,如果我在任何方面有所帮助;)

Jorge <@jjsquady> Gonçalves