我已经配置(使用spring)我的应用程序用activemq监听jms que,一切正常。 我的activemq服务器安装在另一台服务器上,有时它可以脱机,我想处理连接错误。这可能吗?
这是我的弹簧配置
<amq:connectionFactory id="jmsFactory" brokerURL="tcp://xxx.xxx.xxx.xxx:61616" />
<bean id="messageConverter" class="com.unic.thesting.main.jms.message.TheStingMessageConverter" scope="tenant"/>
<jms:listener-container concurrency="10" connection-factory="thestingJmsFactory" destination-type="queue" message-converter="thestingMessageConverter">
<jms:listener destination="in" ref="orderStatusConsumer" method="consume"/>
</jms:listener-container>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate" scope="tenant">
<property name="messageConverter" ref="messageConverter" />
<property name="connectionFactory">
<bean class="org.springframework.jms.connection.SingleConnectionFactory" scope="tenant">
<property name="targetConnectionFactory">
<ref local="jmsFactory" />
</property>
</bean>
</property>
</bean>
答案 0 :(得分:1)
当你使用`时,DefaultMessageListenerContainer
会被处理,如果因为任何原因被丢弃,它会恢复与JMS提供程序的连接(默认情况下,它会每5秒重试一次,直到恢复连接为止),所以你没有必须在听众面前做任何事情。
在使用jmsTemplate的发送方,如果在发送消息时出现任何问题,您将收到运行时org.springframework.jms.JmsException
。您应该能够捕获任何自定义处理