我在骆驼中有一个处理器,该处理器正在向骆驼中的端点(Apache骆驼)发送消息。
我在骆驼xml文件中有一个端点:
<endpoint id="sendQueue" uri="FBActiveMQ:queue:SEND_Q" />
我将队列sendQueue从queuemanager中删除(使用IBM MQ),并尝试将消息从处理器发送到此队列,并捕获异常并在处理器本身中处理。
问题是,当消息发送到已删除的队列时,我再也不会出现异常。
我知道我可以在骆驼文件中拥有异常处理程序,但是我不能这样做,因为我的处理器正在事务边界内进行事务,并且在发生队列故障时需要回滚。
请问您有什么线索吗?
编写的代码是这样的(不是确切的代码)。
try{
JmsProducer jmsProducer = new JmsProducer(endPoint);
jmsProducer.start();
Exchange exchange = endPoint.createExchange(ExchangePattern.InOnly);
exchange.getIn().setBody(msg);
jmsProducer.process(exchange);
} catch(Exception e){
e.printStackTrace();
}
答案 0 :(得分:0)
您是否尝试过在try块中的流程调用之后检查交换对象,以查看其中是否有异常。
jmsProducer.process(exchange);
if (exchange.getException() != null) {
exchange.getException().printStackTrace();;
}
我认为,如果您的jmsProducer有问题(例如,没有camelContext),则只会引发异常。
...在原始示例中删除了有关Exchange / Exception错字的位...