04-spring-boot-resttemplate netty定制使用

  • Post author:
  • Post category:其他




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



3 工作原理探究

为了证实相关代码的工作,使用了arthas监控相关代码,打印出了Netty4ClientHttpRequestFactory的具体堆栈调用,arthas指令如下是所示

stack org.springframework.http.client.Netty4ClientHttpRequestFactory

如下图所示,可以看到两个堆栈,一个是netty线程的消息发送,通道相关处理,另外一个则是发送rest请求的相关接口的底层调用栈,可以看到,相关rest接口的发送,底层实际上是Netty4ClientHttpRequestFactory调用netty完成的,从两个堆栈就可以非常明确。

image-20201024194849294



4 不推荐理由

spring官方目前已经不支持netty底层实现,这里是原因说明:

image-20201024193830545

原来底层netty实现的方式每次都会关闭http连接,这里确实不值得推荐。



版权声明:本文为xinquanv1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。