如果MQ不可用,请停止骆驼路线

时间:2020-09-10 14:56:03

标签: apache-camel spring-camel

我有一条骆驼路线,如下,

  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不可用,如何停止路由?

2 个答案:

答案 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消费消息期间发生)。