DEV Community

Beatriz813
Beatriz813

Posted on

2

Utilização do RabbitMQ para cenários de roteamento complexo.

Ao ler a documentação ou posts que falam sobre o caso de uso do RabbitMQ, sempre lemos que ele é uma ótima opção para cenários de roteamento de mensagem, mas por que ele é a melhor opção?

Este fato se dá pelos artifícios de roteamento que o Rabbit oferece, que são as exchanges e os bindings. As exchanges são entidades para onde as mensagens são enviadas e então roteadas para uma fila de acordo com as regras especificadas nos bindings (vinculação entre a exchange e a fila) dessas exchanges. Dessa forma ele se torna a ferramenta mais adequada para o roteamento de mensagens, porque assim essa lógica de direcionamento é retirada da aplicação e é atribuída para o Rabbit.

Figura 1 — Utilização de exchange do tipo headersFigura 1 — Utilização de exchange do tipo headers

A figura acima descreve o seguinte exemplo: dado um sistema de abertura de chamados, um cliente pode abrir um chamado relacionado a uma categoria de problema — pagamento, pedido ou técnico.
Porém, as regras de roteamento para cada fila acontece da seguinte forma:

  • De acordo com a categoria do problema (pagamento, pedido ou técnico).

  • Se a equipe de pedidos tiver menos de três agentes disponíveis, as mensagens de problemas de pedidos devem ser encaminhadas para a equipe de suporte técnico. Se a equipe de suporte de pagamentos tiver menos de dois agentes disponíveis, as mensagens de problemas de pagamento devem ser encaminhadas para a equipe de suporte técnico.

Para este cenário poderia ser usado outro broker, como o Apache Kafka por exemplo, mas essa decisão traria essa complexidade de roteamento para dentro da aplicação. Optando pelo RabbitMQ a aplicação só terá a responsabilidade de informar para a exchange a categoria do problema e a quantidade de funcionários disponíveis em cada setor. E assim a exchange se encarregará da distribuição das mensagens de acordo com as regras configuradas nos bindings.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay