O padrão de publicação e subscrição significa que uma mensagem enviada por um produtor será recebida por vários consumidores. Como uma mensagem será consumida e processada por múltiplos consumidores, também é chamado de padrão de transmissão ou padrão de um-para-muitos.

Nota: Como o RabbitMQ implementa o padrão de publicação e subscrição usando o tipo de troca fanout, ele também é chamado de padrão fanout.

Diagrama de Arquitetura

padrão fanout

<Explicação:

  • P representa o produtor, C1 e C2 representam consumidores, vermelho representa filas, e X representa a troca.
  • A troca é responsável por encaminhar mensagens para todas as filas vinculadas à troca.
  • Múltiplas filas podem ser definidas, cada uma vinculada à mesma troca.
  • Cada fila pode ter um ou mais consumidores.

Dica: Na mesma fila, uma mensagem só pode ser processada por um consumidor. A razão pela qual o padrão fanout consegue alcançar a transmissão de mensagens é essencialmente através de múltiplas filas de mensagens.

Casos de Uso

O padrão de publicação e subscrição é um padrão de consumo comumente usado de um-para-muitos. Por exemplo, após um pedido de e-commerce ser feito, uma mensagem de pedido é gerada. O módulo de armazém se inscreve na mensagem de pedido para processar remessas, o módulo de notificação se inscreve na mensagem de pedido para enviar mensagens de texto, o módulo de pontos se inscreve na mensagem de pedido para processar pontos, etc. Ao se inscrever em mensagens conforme necessário, é alcançada a expansão de negócios, e é um padrão de design com baixo acoplamento.