如何在 Apache Camel 中定义要通过 ref 抛出的异常

Posted

技术标签:

【中文标题】如何在 Apache Camel 中定义要通过 ref 抛出的异常【英文标题】:How to define exception to be thrown through ref in Apache Camel 【发布时间】:2011-08-15 22:13:49 【问题描述】:

必须在我用 XML 定义的骆驼路线中抛出异常。发现 throwException 声明可从 Camel 2.3 获得,如下所示:

 <throwException ref="forced"></throwException>

但是,我不知道如何定义要抛出的forced 异常类。由于可以使用不同的异常消息多次抛出相同的异常 - 很高兴知道 throwException 是否有其他形式的定义,因此异常类和异常消息是就地定义的。

【问题讨论】:

【参考方案1】:

ref 只是对 a 的引用,所以你可以这样做

<bean id="forced" class="java.lang.IllegalArgumentException">
   <constructor-arg index="0" value="This is forced"/>
</bean>

<camelContext ...>
  ...
</camelContext>

【讨论】:

你也可以在camel-spring源码的src/test/java目录下查看在XML中的使用示例【参考方案2】:

从 2.16.0 版本开始,有更优雅的方式来做,可选的异常消息:

<route>
     <throwException exceptionType="java.lang.IllegalArgumentException" message="illegal argument found"/>
</route>

【讨论】:

以上是关于如何在 Apache Camel 中定义要通过 ref 抛出的异常的主要内容,如果未能解决你的问题,请参考以下文章

如何在apache camel DSL或camel Processor内部设置其他身份验证属性?

如何在有条件的 apache camel 中添加后处理拦截器?

如何在apache camel中附加速度文件内容

如何在apache camel 2.23.1版本的处理器交换对象中获取RouteId?

架构设计:系统间通信(36)——Apache Camel快速入门(上)

如何在Apache Camel Aggregator关联中加入多个标头