6

我开始计划一个新平台,它需要集成来自各种外部平台的各种服务。本质上,我将一堆内部的、本土的服务和我们从第三方获得许可的几个外部服务捆绑在一起。

一般来说,外部服务都是 Web 服务,但它们是 REST、SOAP 和 XML-RPC 的混合体。我们的一些内部服务具有 REST API,但有很多事情并不那么容易:XMPP、Hessian、自定义套接字协议、Java RPC、uWSGI,等等。

从我的研究来看,像 Apache ServiceMix 这样的 ESB 可能非常适合我的需求。然而它看起来真的很复杂。我不会发射火箭,但我确实需要事务性消息传递(主要用于电子商务和权利的东西)。我觉得 ServiceMix 在后台使用的消息队列 (ActiveMQ) 本身可能就足够了。

谁能解释一下 ServiceMix 在 ActiveMQ 之外提供了什么?我知道有很多东西,但是当我沉迷于流行语时,像我这样的 ESB n00b 很难真正掌握有形的区别。

谢谢!

4

1 回答 1

8

ServiceMix 是一个基于 OSGi 的容器,它允许您在受控的运行时环境中部署和运行应用程序(类似于 J2EE 容器,但重量较轻,并且无需针对例如 J2EE 合同进行编程)。多亏了 OSGi,您可以将您的应用程序划分为多个部分,并相互独立地更新/发展这些部分。您可以升级部分应用程序,而无需关闭整个应用程序。与使用独立 Java 进程相比,OSGi 中的生命周期管理要好得多。

如果您想创建一个会随着时间而发展的应用程序,那么您应该考虑使用 OSGi。ServiceMix 为您提供了一个运行时 OSGi 容器来部署您的应用程序。我强烈推荐 Manning 的《OSGi in Action》一书。

为了将甚至可能使用不同传输协议的不同外部服务捆绑在一起,我推荐使用 Apache Camel,顺便说一下,它也可以很好地部署到 ServiceMix 中。

顺便说一句,现有的应用程序可以毫不费力地部署到 OSGi 容器中(无需更改代码)。

Torsten Mielke FuseSource 网站:www.fusesource.com 博客:http ://tmielke.blogspot.com

于 2011-03-31T10:49:10.847 回答