我有一个设计问题需要解决使用Spring
开发我的应用程序的问题。
必须按以下方式设计REST API
。
处理请求并致电外部网络服务并获取结果。
开始处理 - >以异步方式调用外部Web服务。外部 如果主要请求是,服务将通知主要请求 还活着。 - >继续处理主要请求。 - >检查是否 异步过程在接下来的100毫秒中完成 - >如果结果到了, 返回带有新URI的状态201以获得完整的结果。 - >如果 外部服务不完整,返回状态202询问的客户端 客户端在一段时间后回电。
我在考虑如何实现这个解决方案。
我知道我们可能有很多解决方案。 但是,我能否在实现这一目标方面有一些好的方法/建议?不是很详细。
如果不清楚,如果您需要更多详细信息,请与我们联系。
更多更新: 主线程在新线程中调用此Web服务。 新线程一旦完成其处理,通知主线程是否存活。 否则只需更新db中的数据。
答案 0 :(得分:0)
我用以下方式解决了这个问题。 使用CompletableFuture从Springs执行异步任务而不是@Async。
使用超时选项执行future.get以查看结果是否可用。 如果没有,请添加future.thenAccept子句来处理回调。