我们有许多常见的东西。我想将这些内容移到基本路由中,并在扩展中添加/覆盖功能(例如,添加系统相关的标头,进行系统相关的丰富等)。
有什么好方法?使用AdviceWithRouteBuilder是否有意义,因为我只看到了单元测试中使用的示例? 还有其他想法吗?
由于 优素福
答案 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");
使用直接协议的开销非常低,是打破常用功能的好方法。