我需要实现这样的事情:
<from uri="direct:pewpew" />
<doMegaWork status="Busy" message="Don't push on me!">
<to uri="direct:next"/>
我仍然没有在Google上发现同样的问题(更不用说解决方案了)。也许有人知道怎么做?
答案 0 :(得分:2)
Camel不支持自定义标记和/或命名空间(也许它永远不会?)。
我看到以下不同的解决方案来封装可重用的处理步骤:
使用Camel context组件在您的路线中添加完整的上下文。首先,将Camel上下文添加到注册表中:
registry.bind("accounts", myAccountContext);
然后使用路线中的上下文:
<from uri="accounts:invoice"/>
按照here所述编写组件。
答案 1 :(得分:0)
Camel是一种特定于域的语言 - “简明应用程序消息交换语言”。
我们的想法不是使用自定义语言元素扩展它,而是在核心中集中处理。我们的想法是通过处理器,组件,bean等扩展它。
原因与您不使用关键字扩展Java的原因非常相似,例如megawork{ ... }
。关键字或XML标签是核心语言的一部分。
除此之外,引入自定义元素在技术上可能相当复杂,因为XML DSL是必须使用扩展更新的模式的一部分。
那就是说 - 你总是可以分叉Camel并构建你自己的一套DSL方法,但你必须自己维护这个副本。除非DSL条目不适合一般情况并且由Camel社区提供(并获得批准)。