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

Padrão Direto

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.