O que fazer se o sistema de mensageria cair? - Full Cycle FullCycle

Voltar

Wesley Willians

O que fazer se o sistema de mensageria cair?

8 min de leitura

Hoje em dia nós trabalhamos para manter as nossas aplicações cada vez mais resilientes e assíncronas. Mas ainda há o risco de perdermos informações caso haja alguma queda no nosso sistema de mensageria.

Uma das formas de evitar isso é trabalhar de forma assíncrona, enviando a requisição para o message broker ou sistema de steam, que cuida da sua mensagem e te dá a garantia de entrega para que você não perca todo esse processo.

Apesar de muitos pensarem que o sistema de mensageria sempre fica no ar, numa eventual queda você não pode arriscar a perda das suas transações mais importantes até o retorno do sistema. É por isso que existem padrões que nos ajudam a trabalhar dessa forma.

Transactional Outbox

Um dos padrões mais conhecidos é o Transactional Outbox. Ao invés de processar a mensagem e enviá-la diretamente ao message broker, você apenas a processa no formato de envio. Depois disso você pega o ID que o broker pede, junto ao nome do tópico e o payload com o conteúdo da sua mensagem. E então você grava as informações no seu próprio banco de dados, criando uma tabela de outbox. Nesse caso você grava essas informações e faz com que o seu worker, no seu próprio software, leia a tabela e envie a mensagem para o sistema de mensageria.

Dessa forma, se o seu sistema de mensageria estiver fora do ar, as mensagens começam a chegar na tabela de outbox. E em um caso de queda do broker, o seu sistema continua a receber, processar e enviar as informações para a tabela.

Assim que o sistema de mensageria voltar, você simplesmente pega as mensagens da sua tabela e começa a enviá-las para o seu message broker, sendo que essa é uma forma bem segura de garantir que você não vai perder as mensagens em nenhuma hipótese.

Quem trabalha com .NET costuma utilizar um padrão chamado Unit of Work, e enquanto todo o processo da mensagem não foi terminado, ele mantém um tipo de cache com tudo o que você precisa em relação à informação.

Outro detalhe é que conforme a mensagem é enviada ao broker, na garantia de que ela foi entregue, você pode remover o registro do seu banco de dados. Então você não precisa gravar muitos dados nele uma vez que a mensagem já foi despachada.

Esse é apenas um dos assuntos que foram abordados no vídeo. Para mais, assista completo no começo desse post ou em nosso canal do youtube!

Gostou desse conteúdo? Você pode aprender mais práticas para lidar com a queda do sistema de mensageria. Clique aqui, solicite contato e nós te ajudamos.

Veja também: O que é DTO?