Apache camel ApacheCamel:保持路由信息完全独立于Java代码

Apache camel ApacheCamel:保持路由信息完全独立于Java代码,apache-camel,apache-servicemix,enterprise-integration,Apache Camel,Apache Servicemix,Enterprise Integration,首先,感谢目前参与骆驼发展的人们,我感谢他们付出的辛勤工作 我正在寻找一些设计建议 架构是这样的: 我有一组Java类,当实例化这些类时,需要它们相互连接并使用ApacheCamel发送消息。设计约束要求我创建一个框架,以便所有路由信息、生产者、消费者、端点等都应该是camel-context.xml的一部分 个人应该有能力修改这样一个文件并完全更改现有的路由,而不需要Java代码(不提供Java代码,只提供编译过的Jar) 例如,在一个设置中, Bean A->Bean B->Bean C->

首先,感谢目前参与骆驼发展的人们,我感谢他们付出的辛勤工作

我正在寻找一些设计建议

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

个人应该有能力修改这样一个文件并完全更改现有的路由,而不需要Java代码(不提供Java代码,只提供编译过的Jar)

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

Bean A和Bean B产生消息,并且是事件驱动的。如果发生所需事件,bean将发送一条通知消息

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

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

2) 有没有让路由信息完全独立于java代码的例子

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

4) Camel是否总是只调用发起bean或它发送消息的任何bean,而不管bean在整个消息队列中的位置如何


我已经用尽了各种方法来设置它。任何帮助都将不胜感激。

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

最好考虑购买《行动手册》中的骆驼,然后阅读第14章来讨论这个问题。


在人员配备手册上节省41%:骆驼在行动或ActiveMQ在行动。使用代码s2941。如果您考虑使用FUESESB的Service EMIX,您可能希望将您的路由分为两部分。

第一部分是触发路由的事件驱动程序bean。它可以将消息推送到ServiceNMR(请参阅)

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


当然,端点定义可以使用servicemix配置服务进行属性化(请参阅)

谢谢,我拿到了这本书。第十四章看起来很有趣。如果我还有任何问题,我会再次打扰你。我想我可能应该放弃在Fuse Servicemix内部执行此操作的想法。第14章中的配置仅适用于camel:run。当部署到servicemix时,不可能执行它。您仍然可以通过将所有Java代码放在一个包中并部署它来使用servicemix,同时将路由逻辑外部化到Spring/Blueprint文件中,并将该文件本身放到{smx_home}/etc目录中。该文件将作为捆绑包启动。