2010-05-24 83 views
4

我們正在研究使用事件驅動架構(EDA)集成一些粗粒度業務服務,並且這些服務(REST)的服務器端都在Java和.NET中實現( C#)。我們原本以爲使用RabbitMQ(和AMQP協議)作爲中立和開放的手段(在這兩種語言中有良好的客戶端支持),但它意味着必須支持另一個運行時(Erlang)以及Java和CLR。我們也在研究Apache qPid,因爲它具有AMQP協議的Java代理實現,可以消除這種擔憂。用於C#和Java EDA的Apache Camel ESB

有沒有人嘗試在ActiveMQ上使用更豐富的Apache Camel ESB以Pub-Sub EDA方式集成Java和.NET服務?有 我錯過了任何其他可能的建議,通過此路線?

感謝

回答

0

之一ESB使用情況駱駝真正的閃光點是「路由」。據我所知,駱駝路由引擎沒有.NET端口。所以你將無法在.NET端使用Camel的路由功能。 但是,駱駝支持各種交換格式,如json,xml和pojos。您應該能夠使用xml或json作爲交換格式來實現Java和.NET之間的互操作性。

0

我爲我的.net應用程序創建了一個Java端點適配器。 .net應用程序發佈xml或json消息到駱駝端點,在我的情況下是TibcoEMS主題。所有路由/過濾/加密/ ...都是在駱駝內部處理的。交換然後放置在另一個端點上,由java應用程序檢索。

1

如果您正在尋找的是支持EDA的消息傳遞平臺,那麼Camel並非絕對必要。 Camel是一個框架,可以在不同的有效載荷格式之間進行轉換,可以在Web服務,消息傳遞,RSS源和大約160 others之間進行路由。

從上面的問題中,ActiveMQ應該能夠處理您開箱即用的用例。

從客戶端角度的ActiveMQ具有爲Java(JMS - 標準)庫的支持和C++/C#(CMS/NMS - JMS的幾乎精確副本)。其他語言(Ruby,Python,Javascript等)通過(pretty much also standard)​​3210協議得到支持。

我已經在混合的.Net/Java環境中與ActiveMQ一起工作,它完全按照它所說的那樣進行操作。所有這些都在一個很好的Java運行時間中,可以通過JMX使用您最喜愛的監視工具進行檢測。

0

應該很好! ActiveMQ是一個Java應用程序,但是它有一個很好的.NET客戶端API。它應該完成大部分你的pub/sub需求。實際上,如果您需要更多邏輯(如路由),則ActiveMQ會與Camel捆綁在一起,以便您可以在ActiveMQ實例上執行路由,轉換,轉換等操作,方法是配置一些XML(或通過Java/Scala代碼)。

沒有必要直接處理Camel,因爲通信應該通過ActiveMQ來完成。 ActiveMQ/Camel組合對於這類任務非常強大 - 而且它是免費的。