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

Java 如何用J2EE应用程序实现异步处理,java,jms,asynchronous,Java,Jms,Asynchronous,我有一个企业应用程序,每天有大约2k个并发用户。这些用户处理客户呼叫,因此应用程序速度至关重要 当用户结束通话时,他们会提交所捕获的所有信息。此提交可能需要10-45秒 我正在研究如何消除用户的延迟 我们有一个web前端在运行,即后端是在单个EJB上运行的重java 我想让这个提交过程异步化,因为一旦用户提交了请求,他们就不必等待提交完成后再继续下一个客户。这是目前正在实施的 最初我只是想产生另一个线程来处理提交,但这对EJB来说是个禁忌 我能想到的其他选择是使用JMS或SIB 最好的解决方案是

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

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

我正在研究如何消除用户的延迟

我们有一个web前端在运行,即后端是在单个EJB上运行的重java

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

最初我只是想产生另一个线程来处理提交,但这对EJB来说是个禁忌

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


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

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

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

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

希望留下评论,但没有能力

另一种可能性:


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

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