Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 使用Spring@async时跟踪多个异步请求的状态_Asynchronous_Spring Boot_Completable Future - Fatal编程技术网

Asynchronous 使用Spring@async时跟踪多个异步请求的状态

Asynchronous 使用Spring@async时跟踪多个异步请求的状态,asynchronous,spring-boot,completable-future,Asynchronous,Spring Boot,Completable Future,我使用SpringBoot在我的应用程序中开发服务 我有一个场景,在这个场景中,提交到后端的请求需要一些时间才能完成 为了避免等待客户端,我希望立即返回响应,并显示一条消息,说明您的请求已被接受。请求将在后台线程中进行 我看到Spring提供了@Async注释,该注释可用于从主线程创建一个单独的处理线程,并使用它可以在单独的线程中卸载处理 我想做的是,当我将初始响应返回为已接受时,我还想向客户机提供一个跟踪密钥/令牌,客户机可以稍后使用它来检查请求的状态 由于可以有多个客户机访问服务,因此应该有

我使用SpringBoot在我的应用程序中开发服务

我有一个场景,在这个场景中,提交到后端的请求需要一些时间才能完成

为了避免等待客户端,我希望立即返回响应,并显示一条消息,说明您的请求已被接受。请求将在后台线程中进行

我看到Spring提供了@Async注释,该注释可用于从主线程创建一个单独的处理线程,并使用它可以在单独的线程中卸载处理

我想做的是,当我将初始响应返回为已接受时,我还想向客户机提供一个跟踪密钥/令牌,客户机可以稍后使用它来检查请求的状态

由于可以有多个客户机访问服务,因此应该有一种方法来唯一地标识每个客户机来自另一个客户机的请求

我发现SpringAsync或Future中没有能够返回跟踪id的功能

我看到的一种可能性是将返回的Future放在HttpSession中,然后使用它检查客户端的状态。但是,我不喜欢使用HttpSession,我希望我的服务是无状态的

我有什么方法可以达到我的要求吗

谢谢

BS

在调用
Async
方法之前生成键,并将其传递给方法:

String key = generateUniqueKey();
callAsyncMethod(key);
return key;
Async
方法必须将执行状态保存在某个地方(我们称之为数据存储)。当客户机使用密钥请求状态时,您可以在数据存储中查找并返回它