0

任何人都有在(使用或其他)上Jruby project运行的经验,并且能够与不在 jruby 应用程序所在的同一个 jboss 上的另一个“japps”通信,即另一个 jboss 上的某个 java 项目?Jbosstorquebox

我知道有一个torque-messanging但不知道是否可以与外部(在 jruby-app 的 jboss 之外)应用程序通信?

欢迎最佳实践。
提前致谢。

PS 将其他应用程序放在 jruby 应用程序不可接受的解决方案的 jboss 上。

4

3 回答 3

2

我可以推荐你使用Thrift并通过它们建立通信。

Thrift 为您需要的两种语言(Java 和 JRuby)提供生成器,并提供良好和快速的通信。

更新:Thrift 是 Facebook 开发的 RPC(远程过程调用)框架。您可以在Wiki中详细了解它。

用几句话来节省您的时间,它是什么以及如何使用它:

您在 .thrift 文件(文件)中描述数据结构和服务接口。并从此文件生成一种或几种语言(您需要的)的所有需要​​的源文件(都需要序列化)。比你可以简单地用几行创建服务器和客户端

在客户端中使用它看起来就像你只使用简单的类。

使用 Thrift,您可以使用使用的协议和传输。在大多数情况下,通过阻塞或非阻塞传输使用二进制或紧凑协议。因此,网络通信将轻巧快速+快速序列化。

SOAP(基于 HTTP 上的 XML)包,它要大几倍,不适合发送二进制数据,但不仅如此。XML序列化也很慢。因此,使用 SOAP,您会收到很大的开销。同样使用soap,您需要编写(或使用第三方)lib 来调用服务器(微小的网络层),thrift 已经为您做好了。

SMTP 和基本上 JMS 不适合实时和问答通信。我的意思是,如果您只需要将一些消息放入队列中并且有人有时会给出此消息并处理它 - 您可以(并且应该)使用 JMS 或任何其他 MQ 服务(Thrift 可以这样做,但 MQ 架构更适合这个问题)。但是如果您需要实时查询-应答调用,您应该使用 RPC,作为协议,它可以是 HTTP(REST,SOAP)、二进制(Thrift、ProtoBuf、JDBC 等)或任何其他协议。Thrift(和 ProtoBuf)为生成客户端和服务器提供了框架,因此它可以将您从低级问题中封装起来。

PS:我在过去的https://github.com/imysak/using-thrift中做了一些例子(通过 Thrift Java 服务器 + Java 客户端或 node.js 客户端进行通信),也许它对某人有用。但是你可以找到更简单更好的例子。

于 2013-02-13T14:49:55.940 回答
1

您可以为此使用 Web 服务或 JMS

于 2013-02-13T14:58:43.993 回答
1

Torquebox 支持 JMS。您指定的 gemtorquebox-messaging允许在运行 JRuby 应用程序的本地 JBoss AS 服务器/集群上发布和处理 HornetQ 消息。我认为它目前不支持连接到远程服务器。

在您的 JRuby 应用程序中使用此功能,您可以在另一台服务器上配置您的 Java 应用程序,以与在 JRuby 应用程序运行的 JBoss AS 中运行的 HornetQ 通信。

或者,您总是可以实现自己的通信协议或使用另一个 Java 库——您可以访问任何想要从 JRuby 运行的 Java。

于 2013-02-13T15:14:31.627 回答