[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rafael Ferreira
Criador Rafael Ferreira 12/10/2022

ola, surgiu uma duvida, na aula a comunicação foi feita com jobs, imaginemos que eu queira fazer com eventos, por exemplo:

Microservice 01:

quando uma empresa for criada, despacha o evento NovaEmpresa

 

Microserviço 02:

fica ouvindo para saber quando for despachado o evento NovaEmpresa

 

Manager Carlos Ferreira 12/10/2022

Olá, Rafael!
Tudo bem?

Usando esse package que usamos, fica simples fazer isso, você cria um JOB no seu producer (o microsserviço que vai enviar os dados), e cria outro no microsseriviço consumir (o microsserviço que vai receber os dados);

Fizemos este processo, aqui enviamos algo para o RabbitMQ, e lá do outro lado, no microsserviço de e-mail, iremos receber essa mensagem e fazer o que precisa ser feito: https://academy.especializati.com.br/curso/laravel-microservices-micro-emails

Respondi sua dúvida? Era isso mesmo que queria saber?

Carlos Ferreira
Criador Rafael Ferreira 12/10/2022

não eu gostaria de saber se tem como fazer com events e listeners ou seja quando o micro01 dispara um evento o micro02 vai ter um listener para ouvir esse evento especifico

 

mas acho que eu poderia fazer o event no micro 01 e quando o event for disparado, então um job sera chamado e assim sera feita a comunicação

Rafael Ferreira
Manager Carlos Ferreira 12/10/2022

Sim, no "micro e-mail" tem um JOB para ouvir os eventos: https://github.com/especializati/laravel-micro-email/blob/main/app/Jobs/CompanyCreated.php

--

Existe outra alternativa muito legal, mais customizável, que é usar este package aqui: https://github.com/php-amqplib/php-amqplib

(os exemplos de como usar: https://github.com/php-amqplib/php-amqplib/tree/master/demo)

Você pode criar um evento, disparar este evento, e criar um Listener do outro lado para ouvir este evento (Listener -> você cria um comando).

--

Veja um exemplo real, um producer, que envia dos pelo RabbitMQ:
https://github.com/devfullcycle/FC3-admin-catalogo-de-videos-php/blob/main/app/Listeners/SendVideoToMicroEncoder.php#L29
https://github.com/devfullcycle/FC3-admin-catalogo-de-videos-php/blob/main/app/Services/AMQP/PhpAmqpService.php#L46

E um consumer (commando, que vai ouvir um evento que chegar): https://github.com/devfullcycle/FC3-admin-catalogo-de-videos-php/blob/main/app/Console/Commands/RabbitMQCommand.php#L17

Básicamente, neste caso, precisa ficar com o comando sempre up:
php artisan rabbitmq:consumer

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!