Arquitetura Corporativa para Todos

Artigo / Post

O Paradoxo do ACK do Rabbitmq

Aparentemente existe desenvolvedores que encaram a confirmação de leitura como um paradoxo (Uma figura de pensamento, baseada na contradição).

A origem deste cenário é suposição erronea que o Rabbit não é capaz de garantir entrega de mensagens. Esta suposição leva a raciocínios ainda mais exóticos de utilização equivocadas de padrões para tentar resolver este paradoxo.

Aparentemente existe uma falta de entendimento de conceitos fundamentais para utilização filas e formas de garantias. A falta de entendimento dos motivadores dos padrões de Inbox e OutBox completam este cenário caótico.


Ambos os padrões(Inbox/OutBox) foram criados para resolver um problema de resiliência baseado no conceito de atomicidade. Os 2 padrões não são nem bons, nem ruins, entretanto o uso deles antes do conhecimento básico, antes de entender o problema de negócio e entender se o pattern entrega valor para o negócio, é overengeenering puro.


Vamos explorar 2 tipos de garantias (existem mais) em ambientes distribuídos para resolver este paradoxo:

➡ No máximo uma vez – Quando enviamos uma mensagem e o processamento falha, a mensagem será perdida e não será tratada. Isso pode acontecer tanto por erros transitórios quanto por erros não transitórios. Este tipo de garantia o ACK automático se encaixa.

Penso que se um dado que desejo trabalhar é descartável (Garanto a entrega mas não preciso garantir sua execução) não vejo motivo algum para gastar processamento e recursos para tratar este cenário utilizando filas.

➡ Pelo menos uma vez – Temos a certeza de que a mensagem será sempre entregue, porém a execução pode ou não falhar, gerando a incerteza de quantas vezes isso será tratado. Este tipo de garantia precisa vir acompanhado com o tratamento correto da idempotência para garantir a consistência dos dados em um possível reprocessamento.

Podemos conseguir melhorar a resiliência de falha criando novas filas de retentivas ou republicando mensagens do lado do produtor (por exemplo, com um padrão de caixa de saída – OutBox) ou remanipulando do lado do consumidor (por exemplo, com um padrão de caixa de entrada – Inbox).

Este tipo de garantia o ACK manual se encaixa, dando a oportunidade de o desenvolvedor escolher a melhor estratégia para um tratamento , com garantia de entregue e do processamento.

🔔 Quando passamos a debater os conceitos fundamentais das tecnologias e padrões envolvidos, tornamos nossas escolhas mais fácil! garantindo o entendimento correto de sua utilização evitando-se paradoxos que na realidade não existem.

Links de referências :

https://gago.io/blog/oragon-rabbitmq-relacao-ack-e-resiliencia/

https://event-driven.io/en/outbox_inbox_patterns_and_delivery_guarantees_explained/


Tenham um excelente dia! Eu sou Fernando Cerqueira e entrego estratégias digitais para os desafios do presente, com propostas de inovação para um futuro sustentável.

Compatilhe

0 0 votos
Avaliação Global
0 Comentários
Feedbacks embutidos
Ver todos os comentários
Categorias

Sobre o Autor

Picture of Fernando Cerqueira

Fernando Cerqueira

Eu sou Fernando Cerqueira e entrego estratégias digitais para os desafios do presente, com propostas de inovação para um futuro sustentável. Como arquiteto sênior, aproveito meus mais de 20 anos de experiência em arquitetura e desenvolvimento de software para projetar e implementar soluções baseadas em nuvem que ajudam os clientes a transformar seus negócios com tecnologia.

Outros Posts

Categorias

O Futuro do Tempo Livre e da Desigualdade (Uma Crônica gerada por IA)

No ano de 2030, a inteligência artificial havia se tornado onipresente, transformando todos os aspectos da sociedade. As máquinas realizavam tarefas complexas e rotineiras, liberando os humanos para explorar novas possibilidades. Em meio a essa revolução, duas histórias se destacavam: a de Ana e a de João. Ana era uma

UUID (GUID)- Algumas provocações Praticas

Tive uma reunião a algum tempo para avaliar uma solução de alta volumetria com persistência de dados; para entendimento das grandezas envolvidas, são alguns terabytes de armazenamento e algo próximo de 1 bilhão de registros.  São números significativos onde, entre outros temas relevantes e uma excelente apresentação pelo time de

O “Efeito Gremlins” e os microsserviços

Introdução Todas as empresas desejam manter seus ativos de hardwares e softwares atualizados. No entanto, esbarram em custos significativos de atualizações de licenças, complexidade dos legados e ‘dívidas técnicas’ dos ativos de software. Com a adoção de microsserviços (pelos motivos corretos ou não), muitas empresas verificaram que os ativos de

Disagree and Commit: A arte de inovar em ambientes divergentes.

Em 1997, Jeff Bezos introduziu o princípio ‘Disagree and Commit‘ na Amazon. Este princípio, que pode ser traduzido como ‘Discorde e Comprometa-se’, permitindo inovação rápida apesar das discordâncias internas. Este princípio também pode ser útil onde a inovação é frequentemente desafiada por restrições legais e normativas, como o setor financeiro,

"Todos os elementos de uma transformação digital sofrem influência direta quando impulsionados pela inteligência artificial, impactando diretamente as pessoas, processos e serviços essenciais para que qualquer negócio. A governança profissional de IA é fundamental para garantir que a inteligência artificial seja desenvolvida e utilizada de forma ética, transparente e responsável, beneficiando empresas, governos e a sociedade como um todo."

Fernando Cerqueira | Arquiteto Corporativo

Sua Reflexão

0
Adoraria saber sua opinião, comente.x