Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Criação de clusters para criar Mirrored queues elimina a necessidade de outbox pattern em sistemas que precisam de alta disponibilidade?

Possuo um sistema que não pode parar, nesse caso optamos pelo padrão outbox pattern com objetivo de se o rabbit cair, as mensagens continuam sendo enviadas através de uma fila emergencial que fica no banco de dados. Se eu utilizar esse recurso eu poderia eliminar o outbox pattern e a fila emergencial ou mesmo tendo 3 filas espelhadas, ainda pode acontecer do rabbit ficar fora?

1 resposta
solução!

Olá, Alexandre! Tudo bem?

A criação de clusters com filas espelhadas (Mirrored Queues) no RabbitMQ pode ajudar a aumentar a disponibilidade e resiliência do seu sistema, pois permite que as mensagens sejam replicadas em vários nós. Isso significa que, se um nó ficar indisponível, outro pode assumir sem perda de mensagens.

No entanto, mesmo com essa configuração, ainda existe a possibilidade de todo o cluster do RabbitMQ ficar fora do ar, seja por falhas de rede, problemas de hardware, ou manutenção. O padrão Outbox Pattern que você mencionou é uma solução para garantir a entrega de mensagens mesmo que o RabbitMQ esteja indisponível, armazenando mensagens em um banco de dados até que possam ser processadas.

Portanto, embora o uso de Mirrored Queues aumente a resiliência, ele não elimina completamente a necessidade do Outbox Pattern em sistemas que exigem alta disponibilidade. O Outbox Pattern continua sendo uma camada adicional de segurança para garantir que as mensagens não sejam perdidas em caso de falhas mais abrangentes.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.