2016-01-20 97 views
0

我有一个Spring Web应用程序,我在几个URL上调用Http GET并使用结果对数据库进行udpdate。我的问题是,GET有多快(或慢)? 我应该使用第二个线程在URL列表上执行此操作,并在主线程中等待此操作完成吗?例如,如果其中一个URL没有响应(或以某种方式缓慢)会阻止我的程序吗?或者它会立即响应相应的代码?Http GET响应时间

+0

春天有一个功能用于异步查询。 [异步方法](https://spring.io/guides/gs/async-method/) – Raghu

+0

我知道,但问题是:在这种情况下,它是一个好主意/必要吗? – jarosik

+0

它完全取决于您的用例。如果所有用户必须完成的操作取决于这些调用后获得的结果,那么这是一个糟糕的主意。但是如果有其他操作/任务可以继续独立于结果然后你可以继续。从用户的角度思考。如果你的应用程序的响应能力可以通过异步调用得到改善,那么我建议你继续这个实现。 – Raghu

回答

0

远程I /过与高延迟(互联网)网络O操作通常是。如果远程服务调用你想访问(在你的例子中的GET请求)是相互独立的,即。你不需要一个调用的结果来调用另一个调用的结果,那么通过启用异步处理来引入并行性是非常简单/直接的。 Spring's async infrastructure可能是一个很好的候选人。如果他们彼此依赖,则会更复杂一些。你可以使用一个名为Reactive Programming的编程范例和一个相应的实现,如RxJava。有关更多详细信息,请参见ReactiveX

如果你有很多这样的呼吁作出了一个请求/请求周期这是绝对值得的响应时间性能方面的努力。