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
<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.