An Interest In:
Web News this Week
- April 26, 2024
- April 25, 2024
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
[Conceito] - Filas/Tpicos: Processar Mensagens Fora de Ordem
Contedo original em https://twitter.com/zanfranceschi/status/1574848219833462784
Ei dev,
Quando estiver trabalhando com filas e bater aquela dor de barriga porque as mensagens no esto chegando em ordem e isso for um problemo, eu tenho uma alternativa relativamente simples pra voc!
Cola mais pros detalhes!
cc @sseraphini
Primeiro, vamos pensar num cenrio onde a ordem da chegada das mensagens importa.
Extrapolei o diagrama de sequncia, mostrando dois fluxos em um publicao/consumo das mensagens , para simplificar a linha do tempo dos acontecimentos.
Aqui, apenas o caminho feliz mostrado.
S que problemas acontecem e pode rolar da mensagem do pedido chegar antes da mensagem do seu usurio correspondente! E agora?!
Uma srie de coisas pode ter ocorrido:
Mensagens de usurios cadastrados podem ser lentas pra processar.
A publicao do usurio cadastrado pode ter tido um problema.
Num cenrio de consumo paralelo das mensagens, a ordem calhou de estar incorreta.
Etc.
C'est la vie.
Agora que voc entendeu o problema do consumo fora de ordem das mensagens, antes de ler o prximo tweet, pra e pensa como resolveria isso.
Sua ideia ficou muito mirabolante ou ficou simples? J passou por esse problema?
Como disse anteriormente, a alternativa aqui sugerida simples. E o primeiro passo devolver a mensagem para um canal (fila/tpico) de retry.
Cada middleware possui especificidades, mas a ideia central a mesma para todos.
Essa mensagem deve ficar nesse canal (tpico ou fila) por um tempo configurvel segundos, minutos, horas, etc.
Aps esse TTL (time to live expirao) ocorrer, o consumidor, de alguma forma, deve processar novamente essa mensagem.
Esse passo pode se repetir algumas vezes.
Essa retentativa pode ser via canal original ou canal de retry depende do middleware e de detalhes de implementao.
No uma soluo computacionalmente eficiente, mas de fcil implementao pois reusa a infraestrutura existente de filas e mantm os consumidores stateless.
Novamente, a ideia central devolver para o middleware de mensagens/streaming as mensagens que no foram possveis de serem processadas para que estas voltem posteriormente ao consumidor que a devolveu. Eventualmente, a ordem das mensagens ficar correta e tudo se encaixar.
Alguns pontos importantes:
Cuidado com a quantidade de retries sempre coloque um limite.
Calibre com carinho o intervalo das retentativas cuidado para no transformar os retries num auto-ataque!
No use para casos em que pouco lag for essencial.
E o mais importante, procure entender como paralelismo, multithreading, altos volumes, etc. impactam em solues de processamentos assncronos usando filas/tpicos. Experimente, estude, faa POCs.
E no canso de recomendar Enterprise Integration Patterns para esse assunto.
Obrigado demais pra voc que chegou at aqui!
Se curtiu o contedo, d um RT no primeiro tweet, like, comenta, compartilha, mostra pros seus filhos, vizinhos, e no grupo do zap.
Original Link: https://dev.to/zanfranceschi/conceito-filastopicos-processar-mensagens-fora-de-ordem-260b
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To