2

首先感谢目前参与 Camel 开发的人们,感谢他们付出的所有辛勤工作。

我正在寻找一些设计建议。

架构是这样的:我有一堆 Java 类,在实例化时需要它们相互连接并使用 Apache Camel 发送消息。设计约束要求我创建一个框架,以便所有路由信息、生产者、消费者、端点等都应该成为 camel-context.xml 的一部分。

个人应该有能力修改这样的文件并完全改变现有的路线,而无需提供 Java 代码。(不会提供 Java 代码,只会提供编译后的 Jar)

例如在一个设置中, Bean A -> Bean B-> Bean C-> 文件-> 电子邮件。 在另一个 Bean B->Bean A->Bean C->ftp->file->email 我们尝试了各种方法,但是如果原始 bean 没有实现为 Java DSL,消息率非常高,因为骆驼不断调用第一个示例中的 Bean A 和第二个示例中的 Bean B(它们是源)。

Bean A 和 Bean B 发起消息并且是事件驱动的。如果发生所需的事件,bean 会发出通知消息。

我的转换非常简单,根本不需要 Java DSL 的强大功能。总而言之,我有以下问题:

1)考虑到上述限制,我是否确保所有路由信息,包括目标地址,都是骆驼上下文文件的一部分?

2)有没有我可以看的例子来保持路由信息完全独立于java代码?

3)如何确保 Camel 不会不断调用原始 bean?

4) Camel 是否不断调用原始 bean 或它发送和消息的任何 bean,而不管 bean 在整个消息队列中的位置?

我已经用尽了尝试各种方法来设置它的选项。任何帮助,将不胜感激。

4

2 回答 2

3

阅读有关在 Camel wiki 页面上隐藏中间件的信息。这允许您让客户端使用接口来发送/接收消息,但完全不知道 Camel(根本没有使用 Camel API)。

最好考虑购买 Camel in Action 这本书并阅读第 14 章,其中讨论了这一点。 http://www.manning.com/ibsen/

在 Manning 书籍上节省 41%:Camel in Action 或 ActiveMQ in Action。使用代码 s2941。10 月 6 日到期。http://www.manning.com/ibsen/

于 2010-10-04T10:43:30.277 回答
0

如果您考虑使用 FuseESB 的 ServiceMix,您可能希望将您的路由分成两部分。

第一部分是触发路由的事件驱动程序 bean。它可以将消息推送到 ServiceNMR(参见http://camel.apache.org/nmr.html)。

另一部分将留给框架用户,使用 Spring DSL。它只会听 NMR 上的信息(通过另一条路线推送),然后用它做任何他们想做的事情。

当然,端点定义可以使用 servicemix 配置服务进行属性化(参见http://camel.apache.org/properties.html#Properties-UsingBlueprintpropertyplaceholderwithCamelroutes

于 2012-02-15T08:52:43.887 回答