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

一般来说,外部服务都是Web服务,但是它们是REST,SOAP和XML-RPC的混搭。
我们的一些内部服务具有REST API,但有许多事情并非如此简单:XMPP,Hessian,自定义套接字协议(protocol),Java RPC,uWSGI,并且 list 还在继续。

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

任何人都可以解释ServiceMix在ActiveMQ之上和之外提供的内容吗?我知道有很多东西,但是当我深陷专业术语时,像我这样的ESB n00b很难真正把握出明显的区别。

谢谢!

最佳答案

ServiceMix是一个基于OSGi的容器,可让您在受控的运行时环境中部署和运行应用程序(例如J2EE容器,但重量较轻,并且无需编程(例如)J2EE契约(Contract))。
借助OSGi,您可以将应用程序划分为多个部分,并且可以彼此独立地更新/发展这些部分。您可以升级应用程序的某些部分,而不必删除整个应用程序。与使用独立Java进程相比,OSGi中的生命周期管理要好得多。

如果您想创建一个随时间变化的应用程序,那么您应该考虑使用OSGi。而且ServiceMix为您提供了一个运行时OSGi容器,以将您的应用程序部署到该容器。我强烈推荐曼宁撰写的《 OSGi in Action》一书。

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

顺便说一句,可以将现有应用程序轻松部署到OSGi容器中(无需更改代码)。

托斯滕·米尔克(Torsten Mielke)
fuse 来源
网址:www.fusesource.com
博客:http://tmielke.blogspot.com

10-08 06:52