Сообщения потребляются из массива очередей (по одному на каждое соединение веб-сокета) и подтверждаются потребителем, когда мы получаем через веб-сокет подтверждение о том, что сообщение было получено (поэтому мы можем повторно запрашивать сообщения, которые не доставлены в приемлемый период времени). Это делается неблокирующим способом.
99% случаев это работает отлично, но очень редко мы получаем ошибку «RabbitMQ PRECONDITION_FAILED — неизвестный тег доставки» . Это закроет канал. Насколько я понимаю, это исключение является результатом одного из следующих условий:
- Сообщение уже было отправлено. подтверждено или отклонено.
- Попытка подтверждения осуществляется по каналу, по которому сообщение не было доставлено.
- Попытка подтверждения предпринимается после истечения времени ожидания сообщения (ttl ) истек.
Я понимаю, что существует ряд деталей реализации, которые могут повлиять на это, но есть ли на концептуальном уровне какие-либо другие случаи сбоя, которые мы не учли и которые следует обработать? или есть ли лучший способ добиться описанной выше функциональности?
Подробнее здесь: https://stackoverflow.com/questions/425 ... livery-tag
Мобильная версия