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。
3 工作原理探究
为了证实相关代码的工作,使用了arthas监控相关代码,打印出了Netty4ClientHttpRequestFactory的具体堆栈调用,arthas指令如下是所示
stack org.springframework.http.client.Netty4ClientHttpRequestFactory
如下图所示,可以看到两个堆栈,一个是netty线程的消息发送,通道相关处理,另外一个则是发送rest请求的相关接口的底层调用栈,可以看到,相关rest接口的发送,底层实际上是Netty4ClientHttpRequestFactory调用netty完成的,从两个堆栈就可以非常明确。
4 不推荐理由
spring官方目前已经不支持netty底层实现,这里是原因说明:
原来底层netty实现的方式每次都会关闭http连接,这里确实不值得推荐。
版权声明:本文为xinquanv1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。