Настроена простая очередь, 1 consumer с ручным подтверждением, но почему то не сохраняется порядок сообщений, т.е. отправляем [5, 4, 3, 2, 1, 0 - {head} ] на другой сервер - он недоступен, соответственно сообщения ждут в очереди. После включения сервера сообщения доставляются уже не в том порядке, например [4, 5, 0, 1, 2, 3 ]. словно после noAck сообщение перебрасывается в конец очереди. Разве из очереди не должно браться по принципу FIFO? Раньше нарушения порядка не наблюдала
Как то неправильно настроен consumer? Подскажите, пожалуйста, с чем может быть связано?
Звучит так что в консьюмере действительно неверно реализована логика возврата в очередь (не nack, а reject/ack+publish) Второй вариант что у вас просто prefetch count > 1, и сообщения обрабатываются в многзадачности без соблюдения очередности
Consumer один, и prefetch = 0. в теории должно быть линейно. Насчет логики возврата, явно указываю channel.BasicNack(eventArgs.DeliveryTag, false, true) // requeue - true
нет, при префече 0 никаких гарантий линейности не достигнуть
Обсуждают сегодня