繁体   English   中英

RestTemplate for AsyncHttpClient

[英]RestTemplate for AsyncHttpClient

经过一些基准测试后,我发现AsyncHttpClient( https://github.com/AsyncHttpClient/async-http-client )似乎是最稳定和可扩展的异步http客户端,因为它基于NIO并且似乎可以很好地扩展在装载期间。 我将它与OkHttp和Apache Async进行了比较,在模拟具有延迟的后端时,它似乎表现得非常好。

不幸的是,我还没有找到任何方法将它暴露为Spring AsyncRestTemplate,这使得在我们现有的代码库中迁移变得很痛苦。

有没有人知道使用该库的RestTemplate有什么好的桥梁,或者如果有的话,如何在Spring项目中创建一个问题以将其包含在其他Async http客户端工厂中?

您不能将RestTemplate用于异步请求,这就是AsyncRestTemplate的用途。 您需要实现自己的AsyncClientHttpRequestFactory 我简要地看着您在您的文章中提供的链接,它看起来像你可以换一个AsyncRestClient并返回BoundRequestBuilderAsyncClientHttpRequestFactory.createAsyncRequest 然后,您基本上需要将从特定于Spring的接口的调用委托给AsyncRestClient特定的类。 这不应该太难。

也就是说,Spring 5 Web附带了一个执行异步等操作的WebClient 我建议在构建自己的异步库之前认真考虑它,尽管在另一个之上。

这是Spring RestTemplate的官方java文档。

注意:默认情况下,RestTemplate依赖于标准JDK工具来建立HTTP连接。 您可以通过HttpAccessor.setRequestFactory(org.springframework.http.client.ClientHttpRequestFactory)属性切换到使用不同的HTTP库,例如Apache HttpComponents,Netty和OkHttp。

编辑:好的,你用勺子来回答:

AsyncRestTemplate template = new AsyncRestTemplate(
                new HttpComponentsAsyncClientHttpRequestFactory());

自4.0以来,HttpComponentsAsyncClientHttpRequestFactory是spring的一部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM