RabbitMQ PRECONDITION_FAILED — неизвестный тег доставкиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 RabbitMQ PRECONDITION_FAILED — неизвестный тег доставки

Сообщение Anonymous »

У нас есть приложение PHP, которое пересылает сообщения из RabbitMQ на подключенные устройства через соединение WebSocket (расширение PHP AMQP pecl v1.7.1 и RabbitMQ 3.6.6).

Сообщения потребляются из массива очередей (по одному на каждое соединение веб-сокета) и подтверждаются потребителем, когда мы получаем через веб-сокет подтверждение о том, что сообщение было получено (поэтому мы можем повторно запрашивать сообщения, которые не доставлены в приемлемый период времени). Это делается неблокирующим способом.

99% случаев это работает отлично, но очень редко мы получаем ошибку «RabbitMQ PRECONDITION_FAILED — неизвестный тег доставки» . Это закроет канал. Насколько я понимаю, это исключение является результатом одного из следующих условий:
  • Сообщение уже было отправлено. подтверждено или отклонено.
  • Попытка подтверждения осуществляется по каналу, по которому сообщение не было доставлено.
  • Попытка подтверждения предпринимается после истечения времени ожидания сообщения (ttl ) истек.
Мы внедрили защиту для каждого из вышеперечисленных случаев, но проблема остается.

Я понимаю, что существует ряд деталей реализации, которые могут повлиять на это, но есть ли на концептуальном уровне какие-либо другие случаи сбоя, которые мы не учли и которые следует обработать? или есть ли лучший способ добиться описанной выше функциональности?

Подробнее здесь: https://stackoverflow.com/questions/425 ... livery-tag
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»