04-spring-boot-resttemplate netty定制使用
rest template可以使用netty定制的工厂类-Netty4ClientHttpRequestFactory,完成相关rest接口访问工作,由于上一节已经大致介绍了相关rest template的使用,本文的重点放在替换的处理要点盘点以及Netty4ClientHttpRequestFactory的实现讨论上。
1 核心依赖
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation group: 'io.netty', name: 'netty-all', version: '4.1.53.Final'
https://www.jianshu.com/p/c99bfdb5bf11
2 Netty4ClientHttpRequestFactory定制代码
其实主要代码与上一节相同,仅Supplier requestFactory的工场bean换成了我们的Supplier requestFactory。
![image-20201024193332165](https://img-blog.csdnimg.cn/img_convert/e9e1f8263cc3d4625f47d93e19e26089.png)
3 工作原理探究
为了证实相关代码的工作,使用了arthas监控相关代码,打印出了Netty4ClientHttpRequestFactory的具体堆栈调用,arthas指令如下是所示
stack org.springframework.http.client.Netty4ClientHttpRequestFactory
如下图所示,可以看到两个堆栈,一个是netty线程的消息发送,通道相关处理,另外一个则是发送rest请求的相关接口的底层调用栈,可以看到,相关rest接口的发送,底层实际上是Netty4ClientHttpRequestFactory调用netty完成的,从两个堆栈就可以非常明确。
![image-20201024194849294](https://img-blog.csdnimg.cn/img_convert/bd6951c56c8282bc5f0c7be2cb2d9fd7.png)
4 不推荐理由
spring官方目前已经不支持netty底层实现,这里是原因说明:
![image-20201024193830545](https://img-blog.csdnimg.cn/img_convert/068f05c327a079117dc2954ec6a09b57.png)
原来底层netty实现的方式每次都会关闭http连接,这里确实不值得推荐。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)