我是新来的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>
有关JMS事务的更多信息,请参见:http : //www.javacodebook.com/2013/08/20/spring-book-chapter-17-messaging-with-spring/11/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句