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

Documentação moderna centrada em estímulos contextuais

Introdução Essa frase provocativa abaixo “Documentos escritos que não são lidos, não vale os bytes que ocupam – Elemar Júnior” serve como ponto de partida para uma reflexão mais crítica frente aos desafios de uma documentação moderna, que exige novas abordagens e uma mudança cultural para agregar valor. O desafio

Na alta performance não existe vaidade

Cesar Cielo, em seu livro 101% cunhou o titulo deste post. Liderança é um dos atributos de soft skills desejados no mundo corporativo e pode ser treinado e aperfeiçoado.  Uma das características deste atributo é que mesmo com treinamento a liderança não se sustenta pela imposição. Liderança se conquista no

Responsabilidade X Escopo X Exception – Relações pouco exploradas.

Gerar ou não uma exception é um assunto bastante recorrente e muitas vezes gera muita polemica. Eu mesmo escrevi sobre este tema (links ao final). Vamos tentar agora abordar este tema sobre outro viés : Escolher lançar ou não uma exception baseado no conceito de responsabilidade e Escopo: ➡ Se

Accountability

Accountability é um termo que vem sendo recorrente no vocabulário corporativo. Seu conceito quando bem aplicado habilita equipes de alta performance, por agregar a responsabilidade no lugar certo tornando mais ágil e transparente as decisões tomadas ao longo da jornada. Garante que os recursos e decisões sejam utilizados de maneira

"A comunicação das APIs com parceiros de negócio requer uma governança para garantir serviços auditáveis, financeiramente alinhados com a oferta do produto, preservando o ambiente e a plataforma de entrega para atender aos volumes e manter os sistemas saudáveis."

Fernando Cerqueira | Arquiteto Corporativo

Sua Reflexão

0
Adoraria saber sua opinião, comente.x