Получаю все сообщения из очереди, затем на основании некоторых значений из заголовков сообщений формирую фильтр, для того чтобы, некоторые из сообщений отбросить/пропустить, оставшиеся обработать. Проблема в том, что после получения всех сообщений, для формирования фильтра, эти сообщения становятся unacked, даже если я делаю BasicNaсk multiple=true, requeue=true. После отключения консьюмера BasicCancel также ничего не происходит, они остаюстся unacked.
Чтобы, ещё раз выбрать сообщения, для обработки с использованием сформированного фильтра, приходится закрывать сессию (Close) с и повторно её открывать (CreateModel). Подозреваю, что должно быть какое то другое решение. Подскажите куда копать?
Странная ситуация, если тут Вам не помогут, попробуйте задать вопрос в официальной гугл-группе. А delivery-tag при nack'е идёт от последнего полученного сообщения? И не забывайте, что сервер больше не пришлёт эти сообщения в тот же канал:
The server MUST NOT deliver the message to the same client within the context of the current channel.
Да, при bulk nack'e - delivery-tag последнего сообщения.
Даже если я новый BasicConsume запущу - эти сообщения мне не получить? Это же уже будет не "same client", а новый консьюмер хоть и в контексте того же канала.