Pular para o conteúdo principal

Channel Purger

Descrição​

O Channel Purger remove mensagens indesejadas de um canal. Na forma mais simples, esvazia o canal por completo para devolver o sistema a um estado conhecido. Numa forma seletiva, remove apenas mensagens que atendam a critérios, como um identificador ou o valor de algum campo.

Mensageria persistente e assíncrona pode deixar mensagens perdidas no caminho. Elas ficam esperando e acabam consumidas por quem não devia, produzindo comportamento estranho e difícil de diagnosticar.

Problemas que resolve​

  • Mensagens residuais de execuções anteriores interferem em testes e em sistemas em execução.
  • Em request-reply, uma resposta antiga pode ser lida por um novo solicitante no lugar da resposta correta.
  • Testes precisam começar de um estado consistente.
  • Em produção, às vezes é preciso retirar mensagens específicas sem perturbar o restante.

Quando usar​

  • Preparar ambientes de teste para que cada execução comece com canais vazios.
  • Limpar filas de resposta após falhas de solicitantes.
  • Remover mensagens problemáticas identificadas durante a operação.

Quando evitar​

  • Quando as mensagens têm valor de negócio e não podem ser perdidas; prefira movê-las para um Dead Letter Channel.
  • Sem controle de acesso, pois a operação é destrutiva.
  • Como substituto de tratamento adequado de erros e expiração de mensagens.

Trade-offs​

GanhoCusto / Risco
Restaura rapidamente um estado limpoPerda irreversível das mensagens removidas
Torna testes repetíveisPode apagar mensagens legítimas se usado sem critério
Permite remoção seletiva em produçãoPrecisa de permissões restritas e de registro da operação
  • Convém registrar o que foi removido, por exemplo copiando para um Message Store.
  • Muitos brokers oferecem a operação de purge pronta, por exemplo no console da fila.

Diagrama​

O purger age diretamente sobre o canal, removendo todas as mensagens ou só as que atendem ao critério.

Padrões relacionados​

Referência​