【发布时间】:2014-06-13 09:39:03
【问题描述】:
我们正在为我们公司的应用程序定义一个架构,因此该架构必须负责与其他应用程序/系统的集成。 我们首先想到的是将所有集成集中在一个 ESB (Mule) 中,它将以独立模式运行。然而出现了新的需求,问题是每个应用程序都必须管理自己的集成(尚未定义,但它们不应该很复杂)。
现在我们正在评估使用 Apache Camel 或 Mule,但在嵌入式场景中。与一些伙伴讨论它,我们不太清楚哪种方式是建立这个架构的最佳(或更合适)的方式。 在我看来,作为每个应用程序的责任,我会将 Camel 直接集成到我的应用程序中(作为一个库);但他们说在单独的项目中部署 Camel 是一个更好的选择。
这些是我所看到的场景:
我嵌入了 Camel 的应用程序。例如,如果我的应用程序必须调用 Web 服务,我只需对其进行编码并发送它(From(...).to(...) 等)
我的应用程序和另一个嵌入了 Camel 的应用程序。如果我的应用程序必须调用 Web 服务,并且我想通过 Camel 管理所有集成,我想我有 要调用骆驼项目(通过 JMS,或调用它公开的接口),请在该项目中定义一个路由,该路由表示:当我从 X 读取时(即时调用接口)调用此 WS。我的意思是,当我认为不需要它时,它会增加更多的复杂性。
可能我误解了 Camel 的真正工作原理,所以我很高兴听到我的错误;)
【问题讨论】:
-
我在下面给出了答案。我尽量保持简短,但是如果您需要更多信息,请告诉我。
-
我能知道为什么决定每个应用程序都应该管理自己的转换吗?在我看来,使用集中式解决方案会更好,除非有特定原因会迫使您尝试实施第二种解决方案。
-
当然,集中式解决方案是更好的选择,但这是我们所在的组织做出的决定(我的意思是,我的公司为该组织开发应用程序)。
标签: java architecture apache-camel eai