01
Por que a janela de manutenção é o plano mais arriscado
O plano de parar o produtor, drenar a fila e religar apontando para o broker novo parece o mais seguro porque elimina o período em que as duas filas existem ao mesmo tempo. Na prática ele concentra todo o risco num intervalo curto, sem ensaio e sem caminho de volta, e depende de uma premissa que quase nunca se sustenta: a de que a fila drena em tempo previsível.
A fila não drena em tempo previsível porque o tempo de drenagem não depende só do que está nela. Depende do consumidor mais lento, das mensagens que entram em nova tentativa e voltam para o fim, do lote que falha e é reprocessado inteiro, e da mensagem envenenada que ocupa uma partição indefinidamente. Uma fila com quatro mil mensagens e vazão de trezentas por segundo não leva treze segundos para esvaziar se dez por cento delas estão em ciclo de nova tentativa com espera exponencial de até cinco minutos.
O segundo problema é que a janela não tem reversão barata. Depois que o produtor foi apontado para o broker novo e um consumidor confirmou a primeira mensagem lá, voltar atrás significa ter duas fontes de verdade parciais, e nenhuma equipe toma essa decisão bem às três da manhã. Migração com tráfego ligado inverte essa relação: cada etapa é pequena, observável e reversível, e a decisão difícil nunca acontece sob pressão de relógio.
| Estratégia | Como funciona | Risco principal | Reversão |
|---|---|---|---|
| Janela de manutenção | Para o produtor, drena, aponta para o broker novo | A drenagem não termina dentro da janela e alguém corta mesmo assim | Cara, exige reprocessar ou reconciliar manualmente |
| Consumo duplo | Consumidor lê dos dois brokers, produtor migra depois | Duplicidade se o consumidor não for idempotente | Imediata, basta parar de ler do broker novo |
| Ponte entre filas | Um processo copia mensagem do broker antigo para o novo | A ponte vira ponto único e pode duplicar em falha parcial | Imediata, basta desligar a ponte |
| Produção dupla | Produtor publica nos dois, consumidor migra depois | Divergência quando uma publicação falha e a outra não | Imediata, mas exige decidir o que fazer com o já publicado |
| Roteamento por porcentagem | Fração do tráfego novo vai para o broker novo | Ordem entre mensagens do mesmo agregado quebra entre brokers | Imediata, basta zerar a porcentagem |
As duas linhas do meio são as que resolvem a maioria dos casos, e a escolha entre elas depende de quem você controla. Se o produtor é código seu, produção dupla e roteamento por porcentagem são possíveis. Se o produtor é um parceiro externo, um dispositivo em campo ou um serviço legado que ninguém quer tocar, a ponte entre filas é o único caminho, e ela precisa ser tratada com o cuidado de um componente de produção, não como script temporário.