O padrão de roteamento do RabbitMQ é basicamente o mesmo que o padrão de publicação/assinatura, com a diferença de que o padrão de publicação/assinatura encaminha mensagens para todas as filas vinculadas, enquanto o padrão de roteamento encaminha mensagens para a fila com base na correspondência de roteamento.
Do ponto de vista da codificação específica, a diferença entre o padrão de roteamento e o padrão de publicação/assinatura reside no tipo de exchange usado. O padrão de roteamento usa o tipo Direto.
Diagrama de Arquitetura
Explicação:
- P representa o produtor, C1 e C2 representam os consumidores, as caixas vermelhas representam filas e X representa a exchange.
- O tipo de exchange é direto.
- Lógica de encaminhamento de mensagem da exchange direta: compara a chave de roteamento na mensagem com as chaves de roteamento associadas a todos os vínculos desta Exchange. Se forem iguais, a mensagem é enviada para a Fila correspondente a esse Vínculo.
Por exemplo, no diagrama acima: A chave de roteamento para a fila Q1 é laranja, e as chaves de roteamento para a fila Q2 são preto e verde. Ao enviar uma mensagem, se a chave de roteamento da mensagem for laranja, ela será encaminhada para a fila Q1, e se a chave de roteamento da mensagem for preta ou verde, será encaminhada para a fila Q2.
Casos de Uso
O padrão de roteamento é uma extensão do padrão de publicação/assinatura, portanto, os casos de uso são semelhantes ao padrão de publicação/assinatura, com a diferença sendo a capacidade de definir condições de assinatura de mensagem.
Por exemplo: Em um website de comércio eletrônico, existem quatro armazéns na China Oriental, China Meridional, China Setentrional e Sudoeste da China, cada um dos quais possui um conjunto de sistemas de gerenciamento de armazém implantados. Quando um usuário faz um pedido de compra, o armazém mais próximo é responsável pelo envio.
Depois que um usuário faz um pedido e uma mensagem de pedido de compra é gerada, queremos encaminhar a mensagem para o sistema de gerenciamento de armazém regional correspondente para processamento, o que pode ser alcançado usando o padrão de roteamento.
As vinculações de chaves de roteamento para as filas de entrega dos quatro sistemas de gerenciamento de armazém são as seguintes:
- China Oriental = leste
- China Setentrional = norte
- China Meridional = sul
- Sudoeste da China = oeste
Depois que um usuário faz um pedido, determine a qual região pertence o endereço do usuário, calcule a chave de roteamento e, em seguida, envie a mensagem de pedido com a chave de roteamento. A exchange direta do RabbitMQ a encaminhará para a fila correspondente.