Spring WebFlux中WebClient调用Rest API卡在Unsafe.park的原因与排查
WebClient调用Rest API卡住问题
问题现象
- 使用WebClient调用Rest API时,日志打印
thread=reactor-http-nio-6 level=DEBUG logger=reactor.netty.http.client.HttpClient trace_id= span_id= message="[357a6a9a] REGISTERED"后就卡住,线程停在Java Unsafe类的park方法 - 同一应用内用RestTemplate调用相同端点完全正常;应用启动阶段用WebClient调用另一个端点也正常;其他应用采用相同WebClient方式调用5-6个不同主机及端点均无异常
- 更新:仅使用不带lambda函数的空
subscribe()(bare subscribe)时可正常工作
环境信息
- Java版本:11
- Spring WebFlux版本:5.3.25
- reactor-netty-http版本:1.0.27
调用代码
bookingChangeServiceWebClient.put().uri("bookingChange") .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).bodyValue( orderChangeEventRequest, ).retrieve().bodyToMono(String::class.java).subscribe({response -> countDownLatch.countDown()}, {error -> countDownLatch.countDown()})
已尝试操作
- 替换
subscribe()为awaitBody(),问题依旧存在
线程Dump信息(调用awaitBody()时)
"reactor-http-nio-6" prio=0 tid=0x0 nid=0x0 waiting on condition
内容的提问来源于stack exchange,提问作者nikator
相关产品推荐
相关产品推荐

