Todos os produtos
Search
Central de documentação

ApsaraMQ for RocketMQ:Mensagens dead-letter

Última atualização: Jun 27, 2026

Se o consumo de uma mensagem falhar, o sistema acionará automaticamente uma nova tentativa. Caso a mensagem ainda não seja consumida após atingir o número máximo de tentativas, ela se tornará uma mensagem dead-letter. O ApsaraMQ for RocketMQ permite armazenar essas mensagens em um tópico específico para recuperação posterior do negócio ou análise retrospectiva. Este tópico descreve os cenários, as políticas de dead-letter, os limites, os métodos de configuração e as notas de uso para mensagens dead-letter.

Cenários

  • Cenário típico de tratamento de mensagens dead-letter

    Após a falha nas novas tentativas de envio, armazene as mensagens dead-letter em um tópico dedicado. Crie um grupo de consumidores separado para consumir e processar essas mensagens, permitindo o tratamento de caminhos de erro ou a análise de dead-letters.

  • Uso incorreto comum de mensagens dead-letter

    Se você rotear mensagens dead-letter por várias camadas ou devolvê-las ao tópico original, elas poderão entrar novamente no ciclo de tentativas. Isso pode desencadear um efeito avalanche.

Política de dead-letter

Quando as mensagens se tornam dead-letters

Se uma mensagem não for consumida com sucesso após atingir o limite máximo de tentativas, ela deixará de ser entregue e passará à condição de dead-letter.

死信消息

Regras de retenção de mensagens dead-letter

ApsaraMQ for RocketMQ Por padrão, as mensagens dead-letter não são retidas e são descartadas assim que entram nesse estado.

É possível ativar a retenção de mensagens dead-letter no console. Após a ativação, essas mensagens ficam armazenadas em um tópico específico, denominado tópico dead-letter. Para mais detalhes, consulte Configurar regras de retenção de mensagens dead-letter.

As mensagens dead-letter são armazenadas no tópico correspondente como novas mensagens. Suas propriedades sofrem as seguintes alterações:

  • ID da mensagem: Um novo ID é gerado quando a mensagem dead-letter é salva no tópico.

  • Atributos definidos pelo usuário, corpo da mensagem e outras informações fornecidas permanecem inalterados.

  • O período de retenção começa a contar a partir do momento em que a mensagem entra no tópico dead-letter. Por exemplo, se uma mensagem for enviada ao servidor às 13:00:00 e falhar no consumo e nas tentativas duas horas depois (às 15:00:00), seu período de retenção terá início às 15:00:00.

Limites

  • O tópico dead-letter deve ser um tópico de mensagens normais ou ordenadas. Tópicos de mensagens transacionais ou agendadas não podem funcionar como tópicos dead-letter.

  • Não utilize o tópico da mensagem original como tópico dead-letter (para evitar ciclos de tentativa e efeitos avalanche). Caso o sistema detecte essa coincidência durante a transferência, a mensagem será descartada.

  • Mensagens dead-letter provenientes de diferentes tópicos podem ser armazenadas no mesmo tópico dead-letter.

  • A exclusão de um grupo de consumidores não remove o tópico dead-letter associado.

  • Se um tópico estiver referenciado em uma política de dead-letter, remova essa política antes de excluir o tópico.

Configure regras de retenção de mensagens dead-letter

Defina se deseja reter mensagens dead-letter diretamente no console do ApsaraMQ for RocketMQ.

Para acessar essa configuração:

  1. Na página Instances, clique em no nome da instância desejada.

  2. No painel de navegação à esquerda, clique em Groups. Na página Groups, clique em Create Group.

Na caixa de diálogo Create Group, expanda a seção Advanced Settings para configure a Consumption Retry Policy (padrão: backoff exponencial), o Maximum Retry Count (padrão: 16) e a opção Retain Dead-letter Messages. Quando essa opção está desativada, as mensagens que ultrapassam o limite de tentativas são descartadas.

Métricas de observabilidade para mensagens dead-letter

Descrição das métricas

Tipo de métrica

Métrica

Metadados de métricas

rocketmq_send_to_dlq_messages: Quantidade de mensagens que entram em status dead-letter por minuto

Métricas do Cloud Monitor

  • Mensagens entrando em status dead-letter por minuto (por GroupId & Topic): SendDLQMessageCountPerGid

  • Mensagens entrando em status dead-letter por minuto (por GroupId): SendDLQMessageCountPerGidTopic

Utilização das métricas

O ApsaraMQ for RocketMQ oferece suporte à configuração de alertas para mensagens dead-letter. Esse recurso ajuda a detectar anomalias antes que impactem o negócio e a identificar a origem do problema por meio da revisão das métricas no Dashboard.

  • Cenário 1: Visualize a quantidade de mensagens que entram em status dead-letter por minuto

    No Dashboard, verifique o indicador de Messages entering dead-letter status per minute. Também é possível usar o Cloud Monitor para crie um alerta referente a Messages entering dead-letter status per minute (GroupId & Topic).

  • Cenário 2: Verificar quantas mensagens dead-letter permanecem sem processamento

    Depois que as mensagens dead-letter forem armazenadas no tópico designado, visualize a métrica Consumption backlog desse tópico no Dashboard. Alternativamente, utilize o Cloud Monitor para configure um alerta de Message backlog (GroupId & Topic).

Melhores práticas

Como os consumidores podem recuperar informações do tópico original

  • Opção 1: Estabeleça uma relação um para um entre cada tópico dead-letter e seu tópico original.

    Por exemplo, se o tópico original for testTopic, nomeie o tópico dead-letter como DLQ-testTopic.

  • Opção 2: Inclua o nome do tópico original em um atributo personalizado da mensagem. Exemplo:

    messageBuilder.addProperty("originalTopic","testTopic")

Separe o processamento de dead-letters da lógica principal de negócios

Mensagens dead-letter são aquelas que falharam mesmo após as tentativas nos fluxos normais de negócios. Trate-as separadamente para não interromper as operações regulares.

  • O tópico dead-letter deve ser diferente do tópico da mensagem original. Reutilizar o tópico original pode fazer com que as mensagens dead-letter retornem ao ciclo de consumo, bloqueando grupos de consumidores normais e provocando um efeito avalanche.

  • Evite usar grupos de consumidores do fluxo principal de produção para processar mensagens dead-letter. Essa prática pode interferir no processamento normal das mensagens.

Referências

Nova tentativa de consumo