Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
September 27, 2022 07:53 pm GMT

[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

Image

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.

Image

S que problemas acontecem e pode rolar da mensagem do pedido chegar antes da mensagem do seu usurio correspondente! E agora?!

Image

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.

Image

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.

Image

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.

Image

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.

Image

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

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To