Comunicação entre Microsserviços – Conheça o Azure Service Bus

O que é o Azure Service Bus?

O Azure Service Bus é um serviço da Microsoft de Message Broker que trabalha com filas de mensagens e/ou com mensageria via pub/sub (publish & subscribe). Podemos utilizar esse mecanismo de troca de mensagens internas para fazer a comunicação entre aplicações independentes. É uma parte crucial quando trabalhamos com a arquitetura de microsserviços.

O Message Broker atua como um middleware, que faz o trabalho de validar, armazenar, rotear e entregar as mensagens aos seus destinos. Existem várias opções conhecidas no mercado, como o RabbitMQ, Amazon SQS, Redis, Kafka.

Um serviço de mensageria também é muito importante para assegurarmos que as mensagens são entregues a seus destinatários. Caso uma aplicação destino fique offline, as mensagens ficam no aguardo para serem consumidas. Conseguimos evitar duplicidades e as mensagens podem cair numa fila alternativa caso não sejam consumidas apropriadamente.

Mensagens por fila ou por tópicos?

O Azure Service Bus permite a configuração de entrega de mensagens por fila ou por tópicos.

Resumindo: por fila, as mensagens são lidas por um único consumidor, enquanto que por tópicos as mensagens são entregues ao serviço e podem ser lidas por qualquer consumidor que tenha feito a inscrição/assinatura desse tópico.

Diagrama de troca de mensagens por fila

Demonstração de um fluxo das mensagens entre publicador e consumidores por fila

Nesse diagrama podemos observar que o primeiro publicador envia uma mensagem para a fila chamada “abc”, e essa mensagem é consumida por apenas um consumidor.

Diagrama de troca de mensagens por tópico

Demonstração de um fluxo das mensagens entre publicador e consumidores por tópico

No diagrama acima, o publicador envia uma mensagem para o tópico chamado “abc”, e as assinaturas configuradas atuam como filas independentes e são consumidas por consumidores distintos.

As assinaturas podem ser configuradas com alguns parâmetros para filtrar mensagens de acordo com alguma necessidade e caso as mensagens não sejam consumidas devidamente, podemos configurar uma fila de “mensagens mortas” (dead letter), e podemos configurar ações para essas mensagens.

Sobre Danilo Uema 4 Artigos
Desenvolvedor de sistemas senior Full Stack com conhecimentos em C#, TypeScript, SQL, NoSQL

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*