我发送一个请求来获取服务器端RESTful webservices上的数据, 现在在我的网络服务中,我编写了一个代码来从外部服务获取历史数据, 当从外部服务获取所有历史数据时,将调用一个通知函数,指示下载数据已完成。
问题是,当我向webservices发送请求时,我的webservices调用该函数从外部服务获取数据,并且不等待通知并返回。为了让它等待,我需要延迟。
这是一种正确的方法,或者还有其他选择,因为我无法预测网络服务下载数据需要多长时间。
答案 0 :(得分:1)
您必须创建一个标识长期运营的“交易资源”。这是一个很好的解释:
REST的一个常见批评是 因为它与HTTP密切相关 (不支持客户端 做回调机制) 异步服务或通知 关于REST很难。那我们怎么样? 实现长期运行的事务 (通常需要 异步性和回调支持) 在REST?
基本想法是立即 创建一个“交易资源” 返回客户端。虽然 实际处理发生了 在后台异步, 客户随时都可以查询 最新的“交易资源” 处理状态。让我们来看看 请求打印的示例 书,这可能需要很长时间 完整
(例子......)
请注意,会创建一个响应 立即包含URI的 交易资源,甚至之前 打印作业已启动。客户可以 将事务资源轮询到 获取打印的最新状态 工作
(从“Common REST Design Pattern”获得)。
答案 1 :(得分:0)
使用java.util.concurrent.CountDownLatch
。
答案 2 :(得分:0)
我建议使用缓存机制。这是历史数据,所以我想它不会改变那么多,通过不同的过程刷新缓存。
您的WebService可以从缓存中读取。