Quando um consumidor não consegue processar uma mensagem após atingir o número máximo de tentativas, o ApsaraMQ for RocketMQ a move para uma fila de mensagens mortas. Essas mensagens geralmente indicam bug no consumidor, falha em dependência downstream ou formato incompatível. Após corrigir a causa raiz, reenvie as mensagens pelo console para reprocessamento. Se não for possível resolver o problema imediatamente, exporte as mensagens para evitar perda de dados antes do fim do período de retenção de 3 dias. Para mais informações sobre o comportamento de novas tentativas, consulte Nova tentativa de mensagem.
Principais características
|
Característica |
Detalhes |
|
Escopo |
Cada fila de mensagens mortas pertence a um grupo de consumidores, e não a uma instância individual. Todas as mensagens mortas do mesmo grupo vão para a mesma fila, independentemente do tópico original. |
|
Criação |
Sob demanda. O sistema cria a fila apenas quando o grupo gera a primeira mensagem morta. |
|
Retenção |
As mensagens mortas expiram após 3 dias (mesmo período das mensagens normais). O sistema exclui mensagens expiradas automaticamente. |
|
Entrega normal |
Mensagens mortas não podem ser consumidas pela entrega normal. Reenvie-as pelo console após corrigir o problema. |
Diagnosticar mensagens mortas
Ao identificar mensagens em uma fila de mensagens mortas, investigue a causa raiz antes de reenviá-las:
Verifique os logs do consumidor em busca de exceções ou erros durante o processamento da mensagem.
Inspecione o conteúdo da mensagem: consulte-a por ID e revise o corpo e as propriedades para identificar dados malformados ou inesperados.
Valide as dependências downstream: confirme se bancos de dados, APIs ou outros serviços dos quais o consumidor depende estavam disponíveis no momento da falha.
Revise as configurações de timeout do consumidor: garanta tempo suficiente para processar as mensagens antes que o tempo limite seja atingido e acione uma nova tentativa.
Consultar mensagens mortas
O ApsaraMQ for RocketMQ oferece dois métodos de consulta no console:
|
Método |
Entrada |
Tipo de correspondência |
Mais indicado para |
|
Por Group ID |
Group ID + intervalo de tempo |
Correspondência por intervalo |
Navegar por todas as mensagens mortas em uma janela de tempo |
|
Por Message ID |
Group ID + Message ID |
Correspondência exata |
Localizar uma mensagem específica |
Etapas
Faça login no console do ApsaraMQ for RocketMQ. No painel de navegação à esquerda, clique em Instances.
Na barra de navegação superior, selecione uma região, como China (Hangzhou). Na página Instances, clique no nome da instância que deseja gerenciar.
No painel de navegação à esquerda, clique em Dead-letter Queues.
-
Na página Dead-letter Queues, selecione um método de consulta:
-
Query by Group ID: especifique um Group ID e um intervalo de tempo para recuperar todas as mensagens mortas correspondentes.
NotaO horário de geração de uma mensagem morta corresponde ao momento em que ela entrou na fila após esgotar todas as tentativas, e não ao envio original.
Query by Message ID: especifique um Group ID e um Message ID para localizar uma mensagem específica.
-
Reenviar mensagens mortas
Após identificar e corrigir a causa raiz, reenvie as mensagens mortas pelo console para tentar o consumo novamente.
Não é possível reenviar mensagens ordenadas a partir de uma fila de mensagens mortas. Exporte-as e processe-as manualmente.
As mensagens reenviadas permanecem na fila de mensagens mortas e são excluídas automaticamente após o término do período de retenção.
Reenviar uma única mensagem
Consulte a mensagem morta usando qualquer um dos métodos acima.
Na lista de mensagens, localize a mensagem desejada e clique em More na coluna Actions.
Selecione Resend.
Reenviar várias mensagens
Consulte as mensagens mortas por Group ID.
Selecione as mensagens a serem reenviadas.
Clique em Batch Resend Messages.
Exportar mensagens mortas
Exporte as mensagens para preservá-las antes do fim do período de retenção de 3 dias. Os arquivos exportados estão no formato CSV.
Exportar uma única mensagem
Consulte a mensagem morta usando qualquer um dos métodos acima.
Na lista de mensagens, localize a mensagem desejada e clique em More na coluna Actions.
Selecione Export Message.
Exportar várias mensagens
Consulte as mensagens mortas por Group ID.
Selecione as mensagens a serem exportadas.
Clique em Batch Export Messages.
Campos exportados
|
Campo |
Descrição |
|
instanceId |
ID da instância |
|
topic |
Tópico ao qual a mensagem pertence |
|
msgId |
ID da mensagem |
|
bornHost |
URL do produtor que gerou a mensagem |
|
bornTimestamp |
Timestamp de produção da mensagem |
|
storeTimestamp |
Timestamp de armazenamento da mensagem pelo broker |
|
reconsumeTimes |
Número de tentativas de consumo com falha |
|
properties |
Atributos da mensagem no formato JSON |
|
body |
Corpo da mensagem codificado em Base64 |
|
bodyCRC |
Valor CRC (Cyclic Redundancy Check) do corpo da mensagem |
Próximos passos
Nova tentativa de mensagem: entenda como os intervalos e o limite máximo de tentativas determinam quando uma mensagem se torna morta.