【问题标题】:Fastest way to communicate between applications on single container在单个容器上的应用程序之间进行通信的最快方式
【发布时间】:2014-12-02 12:03:14
【问题描述】:

我必须使用单个数据库在单个 Wildfly 容器上运行应用程序。目前他们使用JAX-RS相互交流,不知道有没有更快的方法?

我已经找到了什么:

似乎最快的方法是使用Local EJB。但我不确定JMS。那么Websockets呢?

【问题讨论】:

  • 速度/性能只能通过发送的数据量和并发用户数等来衡量。
  • 也许我应该将我的问题重新表述为可能的沟通方式及其优缺点列表......
  • 方式,方式,waaaaaay 问题太宽泛了

标签: java jakarta-ee servlets wildfly


【解决方案1】:

好的,可以抱怨这个问题的表述过于宽泛,但提供一个可能的答案也很好;)

所以这是我的建议: 只需为模块之间的通信创建一个干净的 API,并将其作为 JAR 部署到您的服务器。包含 JAX-RS 端点的模块还可以实现 API 以提供您需要的服务(不仅用于内部使用,还用于您的 REST 服务,然后将简单地委派请求处理)。现在,您可以在内部使用需要时使用 CDI 简单地注入服务,据我所知,这是进行内部通信的最快方式,因为它直接与 JAVA 对象一起使用。使用 CDI 注入服务实现还有解耦模块的好处。

我希望这会有所帮助;)

【讨论】:

  • 我问的不是模块,而是单独的应用程序(war 文件)。其实我想在这里通过 JAX-RS、RMI 等其他方式进行通信的利弊
  • 为什么应用程序不能通过 API 调用进行内部通信?如果您定义了描述应用程序服务的 API,则部署在同一台机器上的另一个应用程序可以使用此 API 来调用服务实现。这比通过 http 调用服务要快得多。
  • 你的意思是这样的:github.com/wildfly/quickstart/tree/master/inter-app(通过本地接口ejbs通信)?
  • 我只是看了一眼,它似乎是我的意思,是的。您必须在应用程序和 api 之间设置 jboss 模块依赖关系,......然后一切都应该使用注入工作。这就是我们要走的路,而且效果很好。
【解决方案2】:

您看过内存映射文件吗?他们可以提供一些very high throughput。查看 NIO FileChannel 类。如需现成的解决方案,请查看Jocket

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多