As quatro palavras fundamentais quando falamos de mensageria são: Producer, Exchange, Queue e Consumer.
Para facilitar a compreensão, vamos usar um exemplo real de e-commerce, que envolve vários serviços como recebimento de pedidos, processamento de pagamentos, atualização de estoque, notificação ao cliente e logística de entregas.
Producer:
É quem inicia a comunicação entre os serviços. No nosso exemplo, tudo começa com o pedido do cliente, então nosso producer é a API que recebe esses pedidos. Ao receber um pedido, o producer envia uma mensagem para nossa Exchange com todos os dados necessários para os outros serviços. Conforme recebe mais pedidos, a API continua adicionando mensagens na Exchange.
Exchange:
É como uma fila particular de mensagens do producer, responsável por direcionar as mensagens para o destino correto. O producer adiciona mensagens com os dados de cada pedido nessa fila. A Exchange, seguindo o esquema FIFO (First In, First Out), encaminha essas mensagens para determinadas Queues — outras filas com propósito diferente. A Exchange pode ter diferentes tipos, o que altera sua forma de distribuir as mensagens.
Queue:
Assim como a Exchange, a Queue recebe mensagens — especificamente aquelas que a Exchange direcionou, contendo os dados dos pedidos. Seu propósito é armazenar essas mensagens para que os Consumers conectados possam obtê-las.
Consumer:
O consumer obtém as mensagens da Queue seguindo o FIFO, acessa os dados do pedido e os processa. Em nosso e-commerce, exemplos de consumers são: o serviço que processa pagamentos conforme o valor do pedido, o que atualiza o estoque baseado na quantidade, e o que notifica o cliente. Esses serviços processam os dados sem prender o usuário em telas de carregamento, permitindo que ele continue fazendo outros pedidos.
Um detalhe importante: um Consumer também pode atuar como Producer e vice-versa. Por exemplo, o serviço de pagamento pode enviar mensagens para outros sistemas informando se o pagamento foi bem-sucedido. Os outros serviços podem então cancelar ou desfazer ações anteriores, e a API de pedidos pode retornar uma mensagem sobre a falha no pagamento.
Exemplo do esquema de mensagens:
Top comments (0)