ESB for Python?

时间:2012-05-10 19:53:46

标签: python soa rabbitmq esb amqp

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

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

我应该注意到PHP / Python生态系统是内部的 - 我们的许多客户都是使用我们的应用程序集成的大型单片企业软件的相当隐藏的组织。对于面向客户的API,他们会对SOAP,XML-RPC等感到满意。我们已经有了请求。因此,在 border ,我们最终可能最终提供基于JSON和基于SOAP的服务;只是不在内部。

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

2 个答案:

答案 0 :(得分:3)

这真的是一个很大的问题,如果可能的话,更像是一个问题。如果我误解了你,请原谅我。

根据定义,ESB在实现应用程序时并不真正与您选择的语言相关联。因此,无论您希望以SOA方式连接的应用程序是用PHP还是Python编写,您都应该能够在SOA中公开它们。另一方面,JSON在SOA世界中是一个不受欢迎的选择,这个选择非常重要。

许多COTS ESB都提供一定程度的REST支持。 Mule,ServiceMix,WSO2,JBoss是一些开源的。如果您更愿意与商业供应商合作,我相信Tibco和Oracle可以提供开箱即用的支持,也可以通过一些编码来实现。

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

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

HTH

答案 1 :(得分:2)

哇...这就是问题所在,并且我无法完全回答它......但是因为你问这里是众所周知的2美分:

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

我唯一关心的是RabbitMQ将继续支持AMQP的python库。目前的图书馆功能齐全,我已经使用过它们......但它们并没有长久存在,而且我不确定社区对这些工作感兴趣和支持的程度有多大。也就是说,似乎RabbitMQ(AMQP,以及一般的消息传递)最近成为一个热门话题,希望这会扩大在python上运行的基础--AMQP接口库。