我正在使用 spring boot 在我的应用程序中开发服务。
我有一个场景,提交到后端的请求需要一些时间才能完成。
为了避免等待客户,我想立即返回响应,并附上您的请求已被接受的消息。该请求将在后台线程中进行。
我看到 Spring 提供了 @Async 注释,它可用于从主线程创建一个单独的处理线程,并使用它我能够在一个单独的线程中卸载处理。
我想做的是当我返回接受的初始响应时,我还想为客户提供一个跟踪 key / token ,客户以后可以使用它来检查请求的状态。
由于可能有多个客户端访问该服务,因此应该有一种方法可以唯一地标识每个客户端对另一个客户端的请求。
我看到在 Spring Async 或 Future 中没有这样的功能可以返回跟踪 id。
我看到的一种可能性是将 Future 返回到 HttpSession 中,稍后使用它来检查客户端的状态。但是,我不想使用 HttpSession 并希望我的服务是无状态的。
有什么方法可以满足我的要求。
谢谢,
学士
请您参考如下方法:
在调用Async
方法之前生成 key ,并将其传递给该方法:
String key = generateUniqueKey();
callAsyncMethod(key);
return key;
Async
方法必须将执行状态保存在某处(我们称之为数据存储)。当客户端使用键请求状态时,您在数据存储中查找并返回它。