Utilização do RabbitMQ para cenários de roteamento complexo.
Beatriz813
Posted on October 1, 2023
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 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.
Posted on October 1, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 30, 2024