5

在工作中,我们正在讨论选择现成的全栈 ESB(企业服务总线 - http://en.wikipedia.org/wiki/Enterprise_service_bus)与围绕 AMQP 系统(如 RabbitMQ)滚动我们自己。

部分担忧是我们的生态系统是 PHP 尽可能快地迁移到 Python,以及我们已经拥有的 API 都以 JSON 格式传递消息。ESB 和“SOA 解决方案”上的搜索空间真的,真的被污染了。那个或这个都不是 Python Thing(tm)。因此我在这里问:似乎我们考虑过的所有全栈 ESB 解决方案都主要集中在集成基于 SOAP 的组件上。这似乎是很多我们可能不想做的消息的双重包装和解包。此外,如果可以的话,我们真的很想用 Python 编写我们的服务到 ESB 适配器。

我应该在这里指出,PHP/Python 生态系统是内部的——我们的许多客户都是相当隐蔽的组织,他们使用与我们的应用程序集成的大型单一企业软件。他们会对面向客户的 API 的 SOAP、XML-RPC 等感到满意。我们已经收到了请求。所以,在边界,我们最终可能会同时提供基于 JSON 和基于 SOAP 的服务;只是不是在内部。

tl;dr:有没有人喜欢与 Python 应用程序一起使用的全栈 ESB?与您合作过的不受欢迎的人怎么样(无论如何,它有多糟糕?你认为包装像 RabbitMQ 这样的东西对于 PHP/Python 生态系统来说是一个更好的主意吗?

4

2 回答 2

3

如果可以的话,这确实是一个大问题,更像是几个问题。所以,如果我误解了你,请原谅我。

根据定义,ESB 与您在实现应用程序时选择的语言并没有真正耦合。因此,无论您想以 SOA 方式连接的应用程序是用 PHP 还是 Python 编写的,您都应该能够在 SOA 中公开它们。另一方面,JSON 在 SOA 世界中是一个有点偏离的选择,这个选择非常重要。

许多 COTS ESB 提供了某种程度的 REST 支持。Mule、ServiceMix、WSO2、JBoss 是一些开源的。如果您更喜欢与商业供应商合作,我相信 Tibco 和 Oracle 要么具有开箱即用的支持,要么可以通过一些编码来实现。

您选择使用任何消息代理(例如 RabbitMQ 或 AMQP)实际上与传输有关——这又一次不是真正直接相关的。再说一次,如果您的目标是在您的应用程序之间添加消息传递,那么这是一个我无法真正回答的有效问题。

如果您可以写出您对 ESB 感兴趣的主要动机,这将有助于获得更好的答案。

高温高压

于 2012-05-17T15:48:29.357 回答
2

哇...这就是个问题,而且我无法完全回答它...但是既然您问了这是众所周知的 2 美分:

RabbitMQ 很不错。我将它用于在科学计算网格上实现缓存的多代理系统中的实时消息传递。RabbitMQ 的一个很好的特性是您可以推送任意(包括二进制)消息,这可能是一个很好的性能特性。(也许使用 Hessian 协议的序列化/反序列化?)

我对 RabbitMQ 的唯一关心是继续支持 AMQP 的 python 库。当前的库是功能性的,我已经使用过它们……但它们存在的时间不长,而且我不确定对此类工作感兴趣和支持的社区有多大。也就是说,最近似乎 RabbitMQ(AMQP 和一般的消息传递)正在成为一个更热门的话题,希望这将拓宽在 python - AMQP 接口库上工作的基础。

于 2012-05-10T20:18:34.933 回答