1

我需要实现这样的事情:

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

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

4

2 回答 2

2

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

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

  • 编写一个单独的可重用路由。我想这是最简单的解决方案和标准的方法。
  • 编写封装整个处理的处理器/bean/服务。
  • 使用Camel 上下文组件将完整的上下文包含到您的路线中。首先,将 Camel 上下文添加到注册表:

    registry.bind("accounts", myAccountContext);
    

    然后在路线中使用上下文:

    <from uri="accounts:invoice"/>
    
  • 按照这里的描述编写一个组件。

于 2014-05-16T15:36:25.773 回答
0

Camel 是一种特定领域的语言——“简洁的应用程序消息交换语言”。

这个想法不是用自定义语言元素来扩展它,而是在核心中集中处理。这个想法是通过处理器、组件、bean 等来扩展它。

原因与您不使用关键字扩展 Java 的原因非常相似,例如megawork{ ... }. 关键字或 XML 标记是核心语言的一部分。

除此之外,引入自定义元素在技术上可能相当复杂,因为 XML DSL 是模式的一部分,必须使用扩展等进行更新。

也就是说——你总是可以 fork Camel 并构建你自己的一套 DSL 方法,但你必须自己维护那个副本。除非 DSL 条目不适合一般情况并且回馈给 Camel 社区(并由其批准)。

于 2014-06-25T05:56:48.550 回答