Подтверждение AmqpItemReader весеннего пакета

#spring-batch #spring-rabbit

#весенний пакет #весна-кролик

Вопрос:

У меня проблема, когда я хочу вернуть свои данные в очередь, когда моя служба не работает, после чтения пакета с данными. Если я правильно понял amqp, я могу использовать подтверждение, но в документации spring bath я не вижу никакой информации об этом. Кроме того, я проверяю исходный код AmqpItemReader и не вижу никакого потока для подтверждения. Нужно ли мне внедрять пользовательский ItemReader с этим потоком или что-то пропустил?

Ответ №1:

AmqpItemReader Использует простую RabbitTemplate.receive() операцию, которая немедленно подтверждает сообщение, если только оно не выполняется в транзакции.

Единственный способ контролировать подтверждения — это использовать транзакции (с RabbitTransactionManager ).

Диспетчер транзакций подтвердит или запросит сообщение, если транзакция зафиксирована или откатана, соответственно.