Как отправить basic.ack в очередь из обработчика сообщений в SimpleMessageListenerContainer

В API RabbitMQ, когда для канала auto-ack установлено значение false, мы можем использовать channel.basicAck(...) для отправки подтверждения обратно в очередь.

Весной у меня есть SimpleMessageListenerContainer, где я установил AcknowledgeMode.MANUAL. и обработчик (SomeMessageHandler, который обрабатывает тип String), который я установил в качестве слушателя для MessageListenerAdapter. Я нигде не могу найти (ни одного компонента), где я отправляю подтверждение обратно в очередь. Есть ли компонент, который мне нужно автоматически подключить к моему обработчику, чтобы позаботиться об этом? Или как правильно обрабатывать это подтверждение, когда режим подтверждения установлен на ручной?


person Paul Samsotha    schedule 08.08.2014    source источник


Ответы (1)


При использовании РУЧНОЙ проверки вы не можете использовать MessageListenerAdapter, вы должны реализовать ChannelAwareMessageListener. Однако MANUAL ack редко требуется для Spring AMQP, контейнер позаботится об этом за вас в случае успеха (или отклонит в случае неудачи), когда доставка завершится (или будет передана другому потоку).

person Gary Russell    schedule 08.08.2014