2013-02-13 59 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