#spring-batch #spring-rabbit
#весенний пакет #весна-кролик
Вопрос:
У меня проблема, когда я хочу вернуть свои данные в очередь, когда моя служба не работает, после чтения пакета с данными. Если я правильно понял amqp, я могу использовать подтверждение, но в документации spring bath я не вижу никакой информации об этом. Кроме того, я проверяю исходный код AmqpItemReader и не вижу никакого потока для подтверждения. Нужно ли мне внедрять пользовательский ItemReader с этим потоком или что-то пропустил?
Ответ №1:
AmqpItemReader
Использует простую RabbitTemplate.receive()
операцию, которая немедленно подтверждает сообщение, если только оно не выполняется в транзакции.
Единственный способ контролировать подтверждения — это использовать транзакции (с RabbitTransactionManager
).
Диспетчер транзакций подтвердит или запросит сообщение, если транзакция зафиксирована или откатана, соответственно.