Despachando eventos
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
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?
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
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
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!