经过一些基准测试后,我发现AsyncHttpClient (https://github.com/AsyncHttpClient/async-http-client)似乎是最稳定和可伸缩的异步http客户端,因为它基于NIO,并且在加载过程中似乎具有很好的伸缩性。我将它与OkHttp和Apache Async进行了比较,在模拟具有延迟的后端时,它似乎表现得非常好。
不幸的是,我还没有找到任何方法将它公开为Spring AsyncRestTemplate,这使得在我们现有的代码库中进行迁移是一件痛苦的事情。
有没有人知道RestTemplate使用库的好桥梁,或者如果没有,如何在Spring项目中创建一个问题来将其包含在其他异步http客户端工厂中?
发布于 2017-08-27 16:26:09
你不能对异步请求使用RestTemplate,这就是AsyncRestTemplate的作用。您需要实现自己的AsyncClientHttpRequestFactory。我简要地查看了您在帖子中提供的链接,看起来您可以包装一个AsyncRestClient并从AsyncClientHttpRequestFactory.createAsyncRequest返回BoundRequestBuilder。然后,您基本上需要将来自特定于Spring的接口的调用委托给AsyncRestClient-specific类。这应该不会太难。
也就是说,Spring5Web附带了一个WebClient,它可以执行异步操作甚至更多。我建议在构建自己的异步库之前认真考虑一下,尽管是在另一个异步库之上。
发布于 2017-08-27 13:15:01
这是spring RestTemplate的官方java文档。
注意:默认情况下,RestTemplate依赖于标准的JDK工具来建立HTTP连接。您可以通过HttpAccessor.setRequestFactory(org.springframework.http.client.ClientHttpRequestFactory)属性切换到使用不同的HTTP库,比如Apache、Netty和OkHttp。
编辑:好的,在这里你可以用汤匙馈送的答案:
AsyncRestTemplate template = new AsyncRestTemplate(
new HttpComponentsAsyncClientHttpRequestFactory());HttpComponentsAsyncClientHttpRequestFactory从4.0开始就是spring的一部分
https://stackoverflow.com/questions/40050277
复制相似问题