如何用J2EE应用程序实现异步处理

时间:2010-01-05 20:07:11

标签: java jms asynchronous

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

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

我正在研究如何延迟远离用户。

我们在I.E.运行了一个Web前端。后端是在单个EJB上运行的重java。

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

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

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

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

2 个答案:

答案 0 :(得分:7)

对于这类案件,实际上有两种选择。

  • 第一个是使用JMS。它的优点是服务器提供了所有必需的基础设施,而你自己也没有多少实现。
  • 另一种方法是在数据库中注册请求,并有一个预定的事件来处理所有这些请求。

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

答案 1 :(得分:2)

本来想留言,但没有能力。

另一种可能性:

将重型EJB包装在队列机制中,并使用相同的API公开另一个bean,以便面向客户端的通信与新bean通信并且速度很快。他们接受请求,将作业添加到队列并立即返回客户端。您不需要更改繁重的EJB或客户端通信,只需将介体放在路上,并添加一层包装。