2013-02-13 63 views
0

任何人有具有Jruby project與另一個「japps」不在同一的JBoss其中JRuby應用程序是進行通信的能力上Jboss運行(使用torquebox或其他)的expirience,即在另一個JBoss的一些Java項目?通信是在不同的服務器

我知道有一個torque-messanging但不知道是否有可能與外部(jruby-app的jboss之外)應用程序進行通信?

歡迎使用最佳實踐。
在此先感謝。

P.S.將其他應用程序放置在jruby應用程序不可接受的解決方案中。

回答

1

Torquebox支持JMS。您指定torquebox-messaging寶石允許在本地的JBoss HornetQ的郵件作爲服務器/羣集JRuby的應用程序正在運行的發佈和處理。我不認爲它目前支持連接到遠程服務器。

將在JRuby應用程序中使用此功能,那麼你可以在另一臺服務器上配置您的Java應用程序一個HornetQ在JBoss AS上運行的應用程序的JRuby上運行的通信。

或者你總是可以實現自己的通信協議,或使用其他Java庫 - 您可以訪問任何Java中,你想從JRuby中運行。

2

我可以推薦你使用Thrift並通過它們建立通信。

節儉爲您所需的語言(Java和JRuby)提供了生成器,並提供良好和快速的通信。

更新: Thrift是在Facebook開發的RPC(遠程過程調用)框架。詳細你可以在Wiki中閱讀。

在一些詞來節省您的時間,它是什麼以及如何使用它:

你來描述數據結構和.thrift文件(文件)服務接口。並從這個文件生成一個或幾個語言所需的所有源文件(全部需要序列化)(您需要)。比你可以簡單地創建幾行服務器和客戶端

在客戶端使用它會看起來像你只是使用簡單的類。

隨着節儉,你可以使用什麼協議和運輸使用。 在大多數情況下,通過Blocked或Not-blocked transport使用Binary或Compact協議。因此,網絡通信將以快速序列化的方式輕而快速。

SOAP(基於HTTP上的XML)包,其數量較大,並且不適合發送二進制數據,但不僅限於此。另外XML序列化非常慢。所以使用SOAP你會收到很大的開銷。此外,你需要用肥皂寫(或使用第三方)lib來呼叫服務器(小型網絡層),節儉已經爲你做好了。

SMTP和基本上JMS不適合實時和問答通信。 我的意思是,如果您只需要將某些消息放入隊列中,某人有時會給出該消息並對其進行處理,那麼您可以(也應該)使用JMS或任何其他MQ服務(Thrift可以這樣做,但MQ體系結構對此更好問題)。 但是,如果您需要實時查詢應答呼叫,則應使用RPC,因爲它可以是HTTP(REST,SOAP),二進制(Thrift,ProtoBuf,JDBC等)或任何其他協議。 Thrift(和ProtoBuf)提供了生成客戶端和服務器的框架,因此它將您從低級別問題中封裝出來。

P.S: 我在過去的https://github.com/imysak/using-thrift(通過Thrift Java服務器+ Java客戶端或node.js客戶端進行通信)中做了一些示例,可能對某人有用。但是你可以找到更簡單更好的例子。

+0

你能不能,請說明一點什麼'Thrift'是,可以將其與'soap'或不便進行比較? – ted 2013-02-13 16:38:50

+0

@ted,更新我的回答,我希望它幫你。 – iMysak 2013-02-14 00:19:29

1

您可以使用Web服務或JMS

+0

當然,但我們如何能與JMS通信? SOAP很好,但它帶來了複雜性。扭矩messiging是完美的,因爲它可以有一些API或任何其他。但它可以與JMS溝通嗎? – ted 2013-02-13 15:02:18