2010-01-05 71 views
3

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

当用户打包电话时,他们提交所有捕获的信息。此提交可能需要10-45秒。

我正在研究如何将延迟从用户。

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

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

本来我只是想产生另一个线程来处理提交,但这是一个不容错过的EJB。

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

什么将最好的解决办法是什么?我还缺少另一种选择吗?

+2

我可能会去JMS。它为您提供了异步要求,它对JEE友好,它允许您扩展并提供良好的可靠性。使用SIB更重要的是拥有比RMI更多的互操作协议。 – 2010-01-05 20:14:23

回答

7

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

  • 第一个将使用JMS。它的优点是服务器提供了所有必需的基础设施,而且您不必自己实施太多。
  • 另一种方法是将请求注册到数据库中,并有一个计划好的事件来处理所有这些请求。

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

2

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

另一种可能性:

包裹重EJB在一个队列机制,并公开提供不同的bean使用相同的API,以便您的面向客户的沟通交谈的新豆,并能够迅速。他们接受请求,将作业添加到队列中并立即返回给客户端。您不需要更改沉重的EJB或客户端通信,只需添加一个中介,然后添加一层包装。

相关问题