Когда запускается интеграция прослушивателя сообщений в Spring, он извлекает сообщения и удаляет их из исходной очереди. Как остановить удаление сообщений из исходной очереди?
Как читать из очереди в режиме ТОЛЬКО ДЛЯ ЧТЕНИЯ в Spring Integration
Ответы (1)
Сделайте свой слушатель transactional
и откатите транзакцию, когда сообщение из очереди будет у вас в руках:
<int-jms:message-driven-channel-adapter channel="input"
connection-factory="connectionFactory"
transaction-manager="transactionManager"
destination-name="MY-QUEUE"/>
<int:publish-subscribe-channel id="input" />
<int:service-activator input-channel="input" order="1" ref="service" output-channel="output"/>
<int:outbound-channel-adapter channel="input" order="1"
expression="T(org.springframework.transaction.interceptor.TransactionAspectSupport)
.currentTransactionStatus().setRollbackOnly()"/>
Но тут нужно понимать, что вы собираетесь делать с оставшимся сообщением в очереди: оно становится доступным для Listener на следующем опросе...
person
Artem Bilan
schedule
02.04.2014
спасибо Артем ... есть ли какая-нибудь книга или учебник, в котором четко приведены примеры?
- person user3467346; 21.04.2014
Точно сказать не могу. Что моя мысль - это просто истечение срока. Я не читал книг по этому вопросу. Извини.
- person Artem Bilan; 21.04.2014