如何将自定义XML标记添加到Apache Camel配置

时间:2014-05-14 13:50:25

标签: xml apache-camel custom-tags

我需要实现这样的事情:

<from uri="direct:pewpew" />
<doMegaWork status="Busy" message="Don't push on me!">
<to uri="direct:next"/>

我仍然没有在Google上发现同样的问题(更不用说解决方案了)。也许有人知道怎么做?

2 个答案:

答案 0 :(得分:2)

Camel不支持自定义标记和/或命名空间(也许它永远不会?)。

我看到以下不同的解决方案来封装可重用的处理步骤:

  • 写一个单独的可重用路由。我想这是最简单的解决方案和标准方法。
  • 编写封装整个处理的处理器/ bean /服务。
  • 使用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社区提供(并获得批准)。