通过回调主请求 - Spring实现外部服务的异步过程

时间:2016-02-01 04:50:45

标签: java web-services rest spring-boot

我有一个设计问题需要解决使用Spring开发我的应用程序的问题。

必须按以下方式设计REST API

处理请求并致电外部网络服务并获取结果。

  

开始处理 - >以异步方式调用外部Web服务。外部   如果主要请求是,服务将通知主要请求   还活着。 - >继续处理主要请求。 - >检查是否   异步过程在接下来的100毫秒中完成 - >如果结果到了,   返回带有新URI的状态201以获得完整的结果。 - >如果   外部服务不完整,返回状态202询问的客户端   客户端在一段时间后回电。

我在考虑如何实现这个解决方案。

我知道我们可能有很多解决方案。 但是,我能否在实现这一目标方面有一些好的方法/建议?不是很详细。

如果不清楚,如果您需要更多详细信息,请与我们联系。

更多更新: 主线程在新线程中调用此Web服务。 新线程一旦完成其处理,通知主线程是否存活。 否则只需更新db中的数据。

1 个答案:

答案 0 :(得分:0)

我用以下方式解决了这个问题。 使用CompletableFuture从Springs执行异步任务而不是@Async。

使用超时选项执行future.get以查看结果是否可用。 如果没有,请添加future.thenAccept子句来处理回调。