Pular para o conteúdo principal

Message Expiration

Descrição​

Message Expiration permite ao emissor definir por quanto tempo uma mensagem continua válida. Se ela não for consumida dentro do prazo, expira, e os consumidores a ignoram como se nunca tivesse sido enviada.

Muitos sistemas redirecionam mensagens expiradas para um Dead Letter Channel; outros simplesmente as descartam, às vezes por configuração. Um receptor que perceba que não conseguirá concluir o processamento antes do prazo também deve descartar a mensagem.

Problemas que resolve​

  • Mensagens que só têm utilidade se processadas rapidamente.
  • Processar dados ou pedidos obsoletos desperdiça recursos e pode gerar resultados errados.
  • Destinos com vazão limitada acumulam filas de mensagens que já perderam o valor.

Quando usar​

  • Pedidos ou dados que perdem o valor após um prazo.
  • Destinos com limite de taxa, como endpoints HTTP, em que o backlog cresce.
  • Para evitar agir sobre instruções desatualizadas.

Quando evitar​

  • Quando toda mensagem deve ser processada, por mais tarde que seja.
  • Quando assinantes que entram depois precisam receber mensagens antigas; nesse caso prefira retenção maior ou assinaturas duráveis.

Trade-offs​

GanhoCusto / Risco
Evita processar mensagens obsoletasMensagens úteis podem ser perdidas se o prazo for curto demais
Reduz backlog e custo de processamentoEscolher descartar ou enviar à dead letter afeta a recuperação
Protege destinos lentosRelógios dessincronizados distorcem o prazo
  • Em geral o prazo mais cedo entre mensagem e fila prevalece.
  • Monitore o volume de mensagens expiradas como sinal de consumidores lentos.

Diagrama​

Mensagens dentro do prazo vão ao consumidor; as vencidas são descartadas ou desviadas.

Padrões relacionados​

Referência​