Val*_*lva 2 java spring activemq-classic jms spring-jms
我是新来的ActiveMQ。我有 2 queues:parser-queue和generation-queue. 我的应用程序在2 个不同的服务器上运行,两者都在侦听队列。我的工作流程非常简单,从解析器队列获取消息,处理它并在工作完成后将另一条消息放入生成队列。
但是,如果在我的工作过程中,获取消息并处理它,我的应用程序将关闭,或者由于任何原因而中断。
未正确处理的同一消息如何再次发送到我的队列以进行处理?
我正在阅读有关订阅恢复策略的内容,但这似乎是一个非常复杂的主题,我不确定是否要使用基于时间的策略,因为我的工作可能会随着时间的推移而变化以完全由我的应用程序处理。
您应该在 JMS 使用者中禁用自动确认功能。在这种情况下,直到客户端确认消息才会被消费。
如果您使用的是 Spring,那么可以这样做:
<bean id="myJmsConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsFactory"/>
<property name="destinationName" value="MY_QUEUE"/>
<property name="messageListener" ref="myJmsListener"/>
<property name="sessionTransacted" value="false"/>
<property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE"/>
<property name="exceptionListener" ref="exceptionListener"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
更多关于 JMS 事务的信息可以在这里找到:http : //www.javacodebook.com/2013/08/20/spring-book-chapter-17-messaging-with-spring/11/
| 归档时间: |
|
| 查看次数: |
1089 次 |
| 最近记录: |