在骆驼中使用自定义错误消息抛出异常
Throwing exception with custom error message in camel
我正在尝试在 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 2.17 开始,有一个附加属性 message
用于设置错误消息。对我来说,有一些限制迫使我坚持使用 camel 2.15。
那么,在 camel 中创建带有错误代码和错误消息的自定义异常的正确方法是什么?
只需调用一个创建并抛出新异常的 bean 方法
public void blowUp(...) {
throw new MyException(...);
}
那 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>
我正在尝试在 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 2.17 开始,有一个附加属性 message
用于设置错误消息。对我来说,有一些限制迫使我坚持使用 camel 2.15。
那么,在 camel 中创建带有错误代码和错误消息的自定义异常的正确方法是什么?
只需调用一个创建并抛出新异常的 bean 方法
public void blowUp(...) {
throw new MyException(...);
}
那 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>