我们有一个使用Webclient的Spring应用程序,它可以调用外部API。在本地环境中,日志中的线程名称为[reactor-http-nio-X]:
2021-12-01 15:58:42.960 | | DEBUG 37528 --- [ctor-http-nio-5] o.s.s.w.s.u.m.OrServerWebExchangeMatcher : Trying to match using PathMatcherServerWebExchangeMatcher{pattern='/webjars/**', method=null}
2021-12-01 15:58:42.960 | | DEBUG 37528 --- [ctor-http-nio-5] athPatternParserServerWebExchangeMatcher : Request 'GET /courses' doesn't match 'null /webjars/**'
在服务器中,线程名称改为[reactor-http-epoll-X]:
2021-12-01 15:58:34.462 | | DEBUG 37528 --- [ctor-http-nio-4] io.netty.handler.ssl.SslHandler : [id: 0x94714fe1, L:/192.168.0.7:60057 - ...
2021-12-01 15:58:34.463 | | INFO 37528 --- [ctor-http-nio-4] HTTP-TRACING : [id:94714fe1, L:/192.168.0.7:60057 - ...
在我的理解中,这种差异也在调度器挂钩上产生了不同的行为。
我如何理解为什么线程名称(和行为(如此不同,以及如何使用nio线程将服务器配置为与本地机器一样的行为?
这些名称反映了这样一个事实,即服务器上使用的底层Netty库是本地库(Linux epoll(,而您的本地机器是Mac或Windows PC。这些名称不应该影响reactor提供的钩子的行为,除非您编写了专门查看线程名称的钩子。。。