我在骆驼中有一个处理器,它正在向骆驼中的endpoint(apache骆驼)发送消息。
我在camel xml文件中有一个endpoint:
<endpoint id="sendQueue" uri="FBActiveMQ:queue:SEND_Q" />
我从队列管理器中删除了队列sendQueue(使用IBM MQ),并尝试从处理器向该队列发送消息,捕获异常并在处理器本身中处理它。
问题是,当消息被发送到已删除队列时,我从未遇到异常。
我知道我可以在camel文件本身中使用异常处理程序,但我不能这样做,因为我的处理器正在事务边界内执行事务,需要在队列失败时回滚。
你有什么线索吗?
编写的代码是这样的(不是确切的代码)。
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();
}
在try块中的进程调用之后,您是否尝试过检查exchange对象,以查看其中是否有异常。
jmsProducer.process(exchange);
if (exchange.getException() != null) {
exchange.getException().printStackTrace();;
}
我认为只有当你的 jmsProducer 有问题(例如没有 camelContext)时,你才会得到一个异常。
…删除了原始示例中有关Exchange/Exception键入错误的信息。。。