Carregando
0x70Lição 8 de 9

Crie fluxos assíncronos confiáveis

Use filas para absorver picos respeitando novas tentativas, ordem e entregas duplicadas.

14 min Questionário com 5 perguntas
Ao final desta lição, você saberá
  • Explicar backpressure, entrega at-least-once e o padrão transactional outbox.

Uma fila separa os produtores dos workers e consegue absorver picos curtos. Se o trabalho chega mais rápido do que os workers conseguem processar, o acúmulo cresce; o backpressure limita ou desacelera os produtores antes que a fila esgote os recursos. Muitos brokers oferecem entrega at-least-once, então uma mensagem pode ser entregue de novo depois que um worker falha. Torne os handlers idempotentes, acompanhe as novas tentativas e as dead letters, e use um outbox quando uma atualização no banco de dados e a publicação de um evento não puderem ficar dessincronizadas.

O outbox grava a atualização de negócio e um registro do evento numa única transação do banco de dados. Um publicador separado envia os eventos pendentes e os marca como entregues; os consumidores ainda precisam de idempotência, porque a publicação pode se repetir.

Prática: sobrecarregue uma fila

Experimente

Até 15 XP

Quando uma fila deixa de ajudar?

Teste cada um destes:

  1. Ligue o pico. A fila se recupera?
  2. Desligue o pico e coloque a taxa de chegada acima da taxa de atendimento. O que a linha faz?
  3. Mantenha a chegada alta e ligue o backpressure. O que você ganhou, e quem paga por isso?
00,30,50,81061218243036424854Tempo (ticks)Na espera
Mostrar os números em uma tabela
Tempo (ticks)Mensagens na espera
00
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
260
270
280
290
300
310
320
330
340
350
360
370
380
390
400
410
420
430
440
450
460
470
480
490
500
510
520
530
540
550
560
570
580
590
Maior backlog
0
Maior espera
0 tick
Rejeitadas
0

Os workers dão conta, então a fila fica vazia.

Prática: torne a entrega segura

Experimente

Até 15 XP

Uma mensagem entregue duas vezes

Com entrega at-least-once, um worker pode terminar o trabalho e cair antes de confirmá-lo.

Mensagem 1 de 5Previsões 0/0
Fila
Worker 1
Worker 2
Banco de dados

Principais conclusões

  • Filas absorvem picos, mas não criam capacidade de processamento.

  • Planeje entregas duplicadas e torne os consumidores idempotentes.

  • Use backpressure e monitore a idade das mensagens na fila, não só o tamanho da fila.

Quiz da aula

5 perguntas · aprovação com 4 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…