Photo by Carol Jeng on Unsplash

Comunicação de microsserviços com AMQP e RabbitMQ

Henrique Silvério
IM+: finanças e investimentos
2 min readOct 1, 2019

--

O padrão de arquitetura de microsserviços tem sido amplamente adotado na indústria de software. Nesse modelo, passamos a dividir os antigos — e enormes — sistemas monolíticos em diversos pequenos componentes independentes, que comunicam-se entre si para executar as tarefas necessárias.

A comunicação entre múltiplos serviços geralmente é feita através de protocolos como o HTTP (por meio de APIs REST), ou AMQP (por meio de softwares como o RabbitMQ).

Neste artigo, iremos focar na arquitetura do protocolo AMQP, e como utilizá-la com o RabbitMQ.

A arquitetura

No AMQP, temos as seguintes “peças”:

  • Producer
  • Broker
  • Exchange
    - Direct
    - Fanout
    - Topic
  • Binding
  • Queue
  • Consumer

Producer é quem envia mensagens para o broker.

Broker é um servidor que “separa” e entrega as mensagens. Como se fosse uma “agência dos correios”.

Consumer é quem recebe as mensagens por meio do broker.

Como você deve ter notado, o broker tem alguns componentes próprios. Vamos entende-los agora.

O Exchange é onde o producer coloca a mensagem que quer enviar. Ele faz o Binding (conecta / vincula) da mensagem com uma ou mais Queue’s, de acordo com o tipo especificado, que pode ser: direct, fanout ou topic.

O exchange Direct encaminha as mensagens para as queues que tenham o nome igual ao routing key especificado na mensagem. Por exemplo: mensagens com uma routing key account-updated serão encaminhadas para a queue com o nome account-updated.

No exchange Fanout, ao invés de enviar uma mensagem para uma fila (relação 1:1), as mensagens são clonadas e enviadas a todas as queues que estiverem vinculadas a ele (relação 1:N). Esse comportamento é muito conhecido pelo nome de “Publish/Subscribe” ou “Pub/Sub”.

E por fim no exchange Topic, temos um controle um pouco mais avançado sobre a entrega das mensagens. Com ele, é possível usar curingas para associar as mensagens com as diferentes queues existentes na aplicação.

Conclusão

Com essa base teórica sobre o protocolo AMQP e a arquitetura do RabbitMQ, já podemos ter uma ideia melhor de como esses caras podem nos ajudar a resolver essa parte de comunicação entre diversos microsserviços. Muito bom!

Em um próximo artigo vamos “colocar a mão na massa” para fazer alguns exemplos de código usando o RabbitMQ com JavaScript. Fique ligado!

Referências

--

--

Henrique Silvério
IM+: finanças e investimentos

💻 Software Developer 🌱 Vegan for the animals 🎮 Support at Summoner’s Rift