Как пропускать сообщения из очереди

arch

#1

Основной сценарий: Мы читаем сообщения из RabbitMQ в цикле с таймаутом в 60 сек. У нас попало в очередь несколько сообщений, одно из которых мы не можем сейчас распарсить. Мы хотим в цикле итеративно считать “хорошие” сообщения из очереди и подтвердить их, а проблемное - не подтверждать, а пропустить, но при этом сохранить его в очереди до следующего цикла обмена.

Сейчас лучшее, что удалось сделать - это вызывать исключение и завершать цикл чтения. Если не вызывать исключение и не подтверждать проблемное сообщение, то код зависнет в методе получения данных из RabbitMQ и следующее сообщение не удастся считать, пока не пройдет таймаут в 60 сек. Есть ли такая комбинация методов работы с компонентой V8RMQClient, которое позволит это сделать?


#2

Можно посмотреть в строну BasicReject, описание как с ним можно работать


#3

есть 3 сценария для сообщений с исключением при обработке:

  • Разобраться потом в этом потоке
  • Выкинуть нафиг и забыть
  • Выкинуть из текущего потока, добавить в поток разбора.

это первый момент

второй момент - это таймаут. Таймаут это время ожидания возникновения сообщения в очереди - то есть аналог sleep. Он к исключениям не относится, хотя и связан.