在camel中使用自定义错误消息抛出异常

时间:2016-12-08 06:40:38

标签: java exception apache-camel jbossfuse

我正在尝试使用camel中的自定义错误消息抛出自定义异常。我可以通过将值设置为已定义的bean来执行此操作,如下所示:

<CamelContext>
  <route>
    <from uri="timer:myTimer"/>
    <bean ref="myException" method="setErrorCode(errorCode)"/>
    <bean ref="myException" method="setErrorMessage(errorMessage)"/>
    <throwException ref="myException"/>
  </route>
</CamelContext>

这种方法运作正常。但是这种方法的问题是,MyException只有一个实例,当有多个并发消费者时,它会引起一种竞争条件。

由于这个问题,我想每次都创建一个新的excpetion实例。不幸的是,我没有看到任何方法在camel路由中创建异常实例,为其设置值然后抛出。

我已经读过,从 camel 2.17 开始,还有一个额外的属性message来设置错误消息。对我来说,有一些限制迫使我坚持使用 camel 2.15

那么,在camel中使用错误代码和错误消息创建自定义异常的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

只需调用一个创建并抛出新异常的bean方法

public void blowUp(...) {
   throw new MyException(...);
}

答案 1 :(得分:0)

然后Camel throwException怎么样? 定义异常:

<spring:bean id="exception-unimplemented-operation"
    class="java.lang.Exception">
    <spring:constructor-arg name="message"
        value="Unimplemented Operation." />
</spring:bean>

...  并在途中 ...

<cml:otherwise>
    <cml:throwException ref="exception-unimplemented-operation" />
</cml:otherwise>