2012-05-10 27 views
4

在工作中,我們正在討論選擇現成的全堆棧ESB(企業服務總線 - http://en.wikipedia.org/wiki/Enterprise_service_bus)與圍繞AMQP系統(例如RabbitMQ)滾動我們自己。用於Python的ESB?

部分問題在於我們的生態系統是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生態系統來說是一個更好的主意嗎?

回答

2

哇...這是相當的問題,而且也沒有辦法,我可以完全回答這個問題......但既然你問這裏是衆所周知的2美分:

RabbitMQ的是相當不錯的。我將它用於實現在科學計算網格上緩存的多代理系統中的實時消息傳遞。 RabbitMQ的一個很好的功能是你可以推送任意的(包括二進制)消息,這可能是一個很好的性能表現。 (也許使用來自Hessian協議的序列化/反序列化?)

我唯一關心的是RabbitMQ將繼續支持python庫AMQP。目前的圖書館是功能性的,我已經使用過它們......但它們並沒有長期存在,我不確定這個社區有多大的興趣和支持這些工作。也就是說,看起來像RabbitMQ(AMQP和通常的消息傳遞)最近成爲了一個熱門話題,並且希望能夠擴大在Python-AMQP接口庫上的基礎。

+0

呀,一個同事被重新實現我們與RabbitMQ的過去的災難作爲試點之一,僅僅在幾分鐘前發出了一封電子郵件,提到了更快的序列化。實際上,是的,如果我們選擇了錯誤的AMQP庫並將其放棄,那麼這種或那種方式會很痛苦,要麼我們不得不拆除並替換或維護放棄軟件。謝謝! – taiganaut

+0

zato特別爲python爲中心的應用程序。他們發表了一篇關於esb的文章[1]很棒。 [1] https://zato.io/docs/intro/esb-soa.html – Kunthar

2

這真的是一個很大的問題,如果可以的話,更像是一個問題。所以如果我誤解了你,請原諒我。

根據定義,ESB在實現應用程序時並不真正與您選擇的語言耦合。因此,無論您希望以SOA方式連接的應用程序是用PHP還是Python編寫,都應該能夠在SOA中公開它們。另一方面,JSON在SOA世界中是一個不錯的選擇,這個選擇非常重要。

許多COTS ESB提供某種級別的REST支持。騾,ServiceMix,WSO2,JBoss是一些開源的。如果您希望與商業供應商合作,我相信Tibco和Oracle可以提供開箱即用的支持,或者可以通過一些編碼實現。

您選擇使用任何消息代理,如RabbitMQ或AMQP,其實是關於傳輸 - 這再次沒有直接關聯。再一次,如果你的目標是在應用程序之間添加消息傳遞,這是一個我無法真正回答的有效問題。

如果你可以寫出你對ESB感興趣的主要動機,那麼對於更好的答案會有幫助。

HTH