我有一条骆驼路线,如下,
from("jms:queue:TEST.LQ?transacted=true&connectionFactory=jmsConnectionFactory&cacheLevelName=CACHE_NONE")
.routeId("routeid")
.autoStartup("true")
.transacted("requried")
....
....
如果TEST.LQ
MQ或队列管理器不可用,我将遇到错误。
ERROR [JmsConsumer[TEST.LQ]] [] [o.a.c.c.j.DefaultJmsMessageListenerContainer ] Could not refresh JMS Connection for destination
我试图通过捕获下面的代码来处理异常,但是JmsMessageListenerContainer
仅抛出该消息而不是异常
onException(MQException.class, JMSException.class)
如果IF MQ不可用,如何停止路由?
答案 0 :(得分:0)
骆驼jms组件对此具有选项-
在testConnectionOnStartup=true
中添加from(uri)
选项:
from("jms:queue:TEST.LQ?transacted=true&connectionFactory=jmsConnectionFactory&cacheLevelName=CACHE_NONE&testConnectionOnStartup=true")
如果启动过程中没有可用的连接,将引发异常。
更多详细信息,请访问jms-component page
答案 1 :(得分:0)
@ sree1611,
您可以在camel jms uri中添加exceptionListener或errorHandler查询参数。 要创建自己的异常侦听器,请实现org.apache.camel.spi.ExceptionHandler 要创建自己的错误处理程序,请实现org.springframework.util.ErrorHandler
我希望不能将使用MQ消费的错误与驼峰错误处理程序联系在一起,以便您不能在onException()中捕获JMS异常(在从MQ消费消息期间发生)。