【问题标题】:How to implement asynchronous processing with J2EE application如何使用 J2EE 应用程序实现异步处理
【发布时间】:2011-01-01 19:08:00
【问题描述】:

我有一个每天有大约 2000 个并发用户的企业应用程序。这些用户处理客户呼叫,因此应用程序速度至关重要。

当用户结束通话时,他们会提交他们捕获的所有信息。此提交可能需要 10-45 秒。

我正在寻找方法来消除用户的延迟。

我们有一个在 I.E. 中运行的 Web 前端。后端是在单个 EJB 上运行的重型 Java。

我想让这个提交过程异步,因为一旦用户提交请求,他们就不必等待提交完成,然后再继续下一个客户。这是目前正在实施的。

最初我只是想生成另一个线程来处理提交,但这对 EJB 来说是不行的。

我能想到的其他选择是使用 JMS 或 SIB,

最好的解决方案是什么?我还缺少另一种选择吗?

【问题讨论】:

  • 我可能会选择 JMS。它为您提供了异步需求,它对 JEE 友好,它允许您向外扩展并且可以提供良好的可靠性。与 RMI 相比,使用 SIB 更多的是为了拥有更可互操作的协议。

标签: java jms asynchronous


【解决方案1】:

本来想发表评论,但没有能力。

另一种可能性:

将繁重的 EJB 包装在队列机制中,并使用相同的 API 公开不同的 bean,这样您的面向客户端的通信就可以与新的 bean 进行快速通信。他们接受请求,将作业添加到队列中并立即返回给客户端。您无需更改繁重的 EJB 或客户端通信,只需在中间放置一个中介,并添加一层包装。

【讨论】:

    【解决方案2】:

    对于这种情况,实际上有两种选择。

    • 第一个是使用 JMS。它的优点是服务器提供了所有必需的基础架构,您不必自己实现太多。
    • 另一种方法是在数据库中注册请求并安排一个计划事件来处理所有请求。

    您选择什么取决于您的要求。如果您需要在请求到达后立即为它们提供服务,那么您需要使用 JMS。在这两种情况下,您都需要将请求的结果保存在数据库中并在其顶部设计 Web 服务。前端可以使用它(通过轮询)将结果呈现给用户。

    【讨论】:

      猜你喜欢
      • 2017-06-03
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2015-06-20
      相关资源
      最近更新 更多