队列不可用,但骆驼的处理器中没有异常

时间:2018-11-15 14:23:30

标签: java apache-camel

我在骆驼中有一个处理器,该处理器正在向骆驼中的端点(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();

        }

1 个答案:

答案 0 :(得分:0)

您是否尝试过在try块中的流程调用之后检查交换对象,以查看其中是否有异常。

jmsProducer.process(exchange);
if (exchange.getException() != null) {
    exchange.getException().printStackTrace();;
}

我认为,如果您的jmsProducer有问题(例如,没有camelContext),则只会引发异常。

...在原始示例中删除了有关Exchange / Exception错字的位...