扩展Camel Route的最佳方法

时间:2014-04-23 10:33:19

标签: apache-camel

我们有许多常见的东西。我想将这些内容移到基本路由中,并在扩展中添加/覆盖功能(例如,添加系统相关的标头,进行系统相关的丰富等)。

有什么好方法?使用AdviceWithRouteBuilder是否有意义,因为我只看到了单元测试中使用的示例? 还有其他想法吗?

由于 优素福

2 个答案:

答案 0 :(得分:1)

如果你使用Java然后它只是java,你可以创建一个基本的RouteBuilder类,并在configure方法中做一些共享的东西,并从扩展类调用super.configure()。

答案 1 :(得分:1)

你可以做"子路线"。我发现它们对于执行常见任务非常有用。 在" CommonRoutes"中创建类似的东西。路线建设者:

// Example
from("direct:extractCommonMetadata")
  .setHeader("orderid").xpath("/data/orderid")
  .setHeader("customer").xpath("/data/customer")

from("direct:enrichWithCommonStuff")
  .enrich("foo:baz")

然后您可以在各种路线中执行此操作:

from("foo:bar")
  .inOut("direct:extractCommonMetadata")
  .inOut("direct:enrichWithCommonStuff
  .foo("bar")

from("bar:foo")
  .inOut("direct:extractCommonMetadata")
  .to("the little house on the hill");

使用直接协议的开销非常低,是打破常用功能的好方法。