Skip to content

Latest commit

 

History

History
150 lines (106 loc) · 3.84 KB

README_PTBR.md

File metadata and controls

150 lines (106 loc) · 3.84 KB

RabbitMQ Actions

Este pacote é um wrapper de vladimir-yuldashev/rabbitmq-queue-laravel.

Adiciona uma nova maneira de enviar e receber mensagens usando o prorocolo RabbitMQ/AMQP.

Instalação e requerimentos


Requerimentos:

  • PHP 8.0 +
  • Laravel 8.0 +
  • RabbitMQ driver for Laravel Queue 12.0+

Da pasta do seu projeto, instalar com composer:

composer require rocketslab/rabbitmq-actions

Configurar o RabbitMQ driver for Laravel Queue


Siga os procedimentos da instalação do pacote vladimir-yuldashev/rabbitmq-queue-laravel.

Como configurar o RLQ: yuldashev/rabbitmq-queue-laravel.

Publicar o arquivo de configuração


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

O namespace padrão das actions é App\RabbitMQ\Actions salvando as actions na pasta app/RabbitMQ/Actions. Você pode mudar isso alterando o namespace no arquivo de configuração. Por exemplo:

config/rabbitmq-actions.php

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

Quando criar novas actions, estas actions serão salvas na pasta app/MyDomain/Actions e o namespace será App/MyDomain/Actions.

Criando Actions


A motivação para a criação deste pacote é encontrar uma forma de simplificar o envio e recebimento de mensagens através do RabbitMQ. Uma das formas que encontrei para isso foi usar ações para definir que tipo de mensagem está sendo enviada do producer para ser tratada como uma ação pelo consumer.

Para criar uma action utilize o comando do artisan make:rmq-action.

php artisan make:rmq-action MyAction

A Action será criada como abaixo:

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
    }
}

O conteúdo dos dados da mensagem é passado no método handle da Action.

As Actions são registradas automaticamente no container do Laravel. Esse comportamento inicia a action assim que a mensagem é recebida pelo consumer.

Produzindo Mensagens


Instalar este pacote e configurar o aplicativo para enviar mensagens como producer é simples. Esta classe ProducerMessage tem um único método chamado send que recebe três parâmetros: $action, $data e um opcional $queue.

O parâmetro $action é o nome da action, que traduz o nome de uma action no consumer.

O parâmetro $data são os dados de conteúdo a serem enviados ao consumer.

O parâmetro $queue é o nome da fila. A fila padrão do Laravel é a default.

Ex: ProduceMessage::send('my-action', 'hello'), onde my-action é a classe MyAction registrada automaticamente.

Customizando Actions


O nome das actions padrão é o nome da classe no formato kebab.

Mas às vezes você quer ter mais controle sobre o nome das Actions. Para personalizar isso, registre as Actions na opção custom_actions no arquivo de configuração.

config/rabbitmq-actions.php

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

na aplicação producer:

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

na aplicação consumer:

    MyAction handle method its called

No momento, uma vez que esta opção é usada, o registro automático fica desabilitado, e você deve registrar todas as Actions aqui.

Roadmap


Este é um projeto em andamento. No futuro, mais recursos podem ser criados.


Obrigado!

Não esqueça de deixar uma estrela caso eu tenha ajudado de alguma forma ;)

Jorge <@jjsquady> Gonçalves