Как читать из очереди в режиме ТОЛЬКО ДЛЯ ЧТЕНИЯ в Spring Integration

Когда запускается интеграция прослушивателя сообщений в Spring, он извлекает сообщения и удаляет их из исходной очереди. Как остановить удаление сообщений из исходной очереди?


person user3467346    schedule 27.03.2014    source источник


Ответы (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
comment
спасибо Артем ... есть ли какая-нибудь книга или учебник, в котором четко приведены примеры? - person user3467346; 21.04.2014
comment
Точно сказать не могу. Что моя мысль - это просто истечение срока. Я не читал книг по этому вопросу. Извини. - person Artem Bilan; 21.04.2014