繁体   English   中英

在服务器上触发异步任务并在异步任务运行时返回

[英]Trigger an async task on the server and return while the async task is running

我在服务器上使用Spring的Java平台上。 我想做以下

  1. 向触发异步任务的服务器发送http请求。
  2. 触发异步任务后从服务器返回响应,而无需
    等待异步任务完成。

我在返回响应时遇到了困难,因为异步任务正在阻塞主线程,导致异步任务运行时客户端超时。

任何人都知道任何有关此功能的示例文章,或者任何人都有一个小的代码段都可以说明实现此功能的一种好方法。

您的整体模型方法不一定正确。

但是以下信息:

异步任务阻塞了主线程

暗示您的假设之​​一不成立:即服务器端能够快速返回状态代码。 至关重要的是:如果服务器在返回立即返回代码之前徘徊在繁重的处理过程中,从而将控制权交还给调用者/客户端,那么您的客户端将像您看到的那样挂起。

因此可能需要以下之一:

  • 如果您可以控制服务器端,则更新服务器端行为以立即返回代码,而不是进行额外的处理
  • 如果不是,那么您需要更改客户端,以至于在继续操作之前甚至不等待服务器返回任何内容

后者意味着您应该从以下位置更改客户端asuyncCode

  • 客户端:向服务器启动请求
  • 等待服务器返回码
  • 启动异步回调处理程序以等待服务器的完整结果

至 :

  • 客户端:启动异步回调处理程序来等待无论是从服务器的初始结果,并从服务器的全部结果
  • 客户端主线程:继续其他工作,以免挂断main循环

通过在我想触发和运行异步的方法上使用spring @Async解决了这一问题。 因此,现在请求触发了异步调用,并在异步任务仍在服务器上运行时立即返回到服务器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM