RabbitMQ PRECONDITION_FAILED - etiqueta de entrega desconhecida

Matt Renner

Temos um aplicativo PHP que encaminha mensagens do RabbitMQ para dispositivos conectados por meio de uma conexão WebSocket (extensão PHP AMQP pecl v1.7.1 e RabbitMQ 3.6.6).

As mensagens são consumidas de uma série de filas (1 por conexão de websocket) e são reconhecidas pelo consumidor quando recebemos a confirmação pelo websocket de que a mensagem foi recebida (para que possamos enfileirar novamente as mensagens que não são entregues em um prazo aceitável). Isso é feito de maneira não bloqueadora.

99% das vezes, isso funciona perfeitamente, mas muito ocasionalmente recebemos um erro "RabbitMQ PRECONDITION_FAILED - etiqueta de entrega desconhecida". Isso fecha o canal. No meu entendimento, essa exceção é resultado de uma das seguintes condições:

  1. A mensagem foi aceita ou rejeitada.
  2. É tentada uma confirmação em um canal em que a mensagem não foi entregue.
  3. Uma confirmação é tentada após o tempo limite da mensagem (ttl) expirar.

Implementamos proteções para cada um dos casos acima, mas o problema continua.

Eu percebo que há vários detalhes de implementação que podem impactar isso, mas em um nível conceitual, há algum outro caso de falha que não consideramos e devemos tratar? ou existe uma maneira melhor de alcançar a funcionalidade descrita acima?

Gabriele

"PRECONDITION_FAILED - etiqueta de entrega desconhecida" geralmente ocorre devido a confirmação dupla, confirmação em canais errados ou confirmação de mensagens que não deveriam ser confirmadas.

Então, no mesmo caso você está tentando executar basic.ackduas vezes ou basic.ackusando outro canal

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Erro de microsserviços Docker-RabbitMQ-NestJS 406 PRECONDITION_FAILED

Regulador de entrega RabbitMQ

Troca de cabeçalhos Rabbitmq e entrega confirmada

Como lidar com valores de chave de roteamento de vinculação desconhecida / inválida no RabbitMQ?

RabbitMQ garante entrega para fila espelhada

Pacotes de entrega no Go?

Etiqueta da mensagem no Rabbitmq

Causa desconhecida de InvalidOperationException?

SendGridApiClient obter resposta de entrega

Entrega de mensagem ordenada SCTP

Status de entrega AWS SNS

Entrega de argumento C # InstaSharper

Entrega garantida de pacotes UDP

O RabbitTemplate.send () garante a entrega das mensagens ao RabbitMQ?

Pika - RabbitMQ - Por que minha taxa de entrega é maior do que a taxa de reconhecimento ao usar prefetch-count 1 para o consumidor

Pika - RabbitMQ - Por que minha taxa de entrega é maior do que a taxa de reconhecimento ao usar pré-busca-contagem 1 para o consumidor

Obtendo propriedade de interface desconhecida

Componente recursivo de profundidade desconhecida

Semântica de entrega de mensagem Kafka

Forçar entrega de eventos de stream

Garantias de entrega de mensagens Akka

Dados de entrega de pai para filho

Como eu mapearia corretamente meus valores de status de entrega Enum de meu modelo de entrega para entrega ViewModel?

Entrega de voleio Resposta não chamada

Princípios de entrega contínua

Amazon SNS - Enviando SMS, status de entrega

Entrega precisa de intenções implícitas

Instalando vamos criptografar no novo TLD de entrega

Spring JMS (ActiveMQ) entrega atrasada de mensagens

TOP lista

quentelabel

Arquivo