我一直在研究Camel和EIPs几天,但有些事我不太了解(还是:))。 例如,假设我有5个应用程序,它们使用多种技术(REST WS,JMS,数据库等)相互交换数据。 - 我应该把我的Camel路线放在哪里? - 我应该更改每个应用程序的代码并在其上声明特定路由吗? - 我应该创建一个新的Web应用程序(或OSGi包)并使其作为中央提供程序来处理路由吗?我的意思是,更改其他应用程序的代码以指向此应用程序中定义的Camel端点? - 使用Camel意味着更改集成集中每个现有应用程序的代码? 我的意思是,Camel如何在真实场景中工作?它更像是一个拦截东西,处理它然后发送到其他地方的中央网络应用程序吗?它是我的应用程序内部的东西(与业务规则位于同一个地方),然后池/拦截/侦听内容并处理它? 我知道这些都是虚假的问题,但我昨天想着它们睡不着觉。任何帮助将非常感激:)
答案 0 :(得分:2)
这是我们使用的方法。
首先,问问自己这个问题,您是否使用骆驼来促进独立运行的应用程序/服务之间的通信?如果是这种情况,那么您可以编写一个包含骆驼路由的新应用程序,它实际上将所有其他组件连接在一起进行通信,并且您对现有应用程序进行了少量更改。
另一方面,也许您想使用驼峰作为已经相互通信的服务的架构标准?在这种情况下,您希望进入每个现有应用程序,并将用于服务间通信的代码(以及与其相关的所有内容,如配置和错误处理)重写为camel路由。您可能会按原样保持业务逻辑,并删除/重新编写许多用于执行Web服务调用,jms等操作的代码。
中等大小的骆驼路线可以轻松替换几百行样板代码并且更具可读性,而且您可以免费获得所有EIP和组件(石英,淡褐色等)。
有关信息,我使用JBoss Fuse作为ESB(使用Apache Camel),它在企业级集成方面表现非常出色。
答案 1 :(得分:0)
vikingsteve的精彩回答。
我们使用Camel集成传统应用程序,因此Camel路由是外部的。我们使用ActiveMQ作为消息总线,使用tomcat6作为容器。如果我们现在开始使用JBoss Fuse(Karaf)。
每个终端系统都获得一个Camel路由集(在我们的系统中是一个战争),它充当该系统到消息总线的适配器。
集成获得Camel路由集。
我们的想法是,随着我们添加越来越多的集成,我们将每个应用程序发展为一组服务,并在一天内完成面向服务的体系结构。
在理想情况下,终端系统路由集将在与终端系统相同的服务器上运行,集成路由集将集中运行。在实践中,我们集中运行所有路径集。这是SLA的问题,并在终端系统上托管协议。
听起来您拥有更加垂直整合的环境,因此您应该能够比我们更干净地实施规范解决方案。
如果你最终得到了分布在网络上的Camel实例,Fusesource正在开发一种名为Fuse Fabric的管理工具。我不知道Redhat自获得它以来已经走了多远。