WebClient未发出响应

时间:2017-06-03 21:26:07

标签: spring spring-boot netty spring-webflux

我刚刚遇到一个令我困惑的问题。我很满意你能给出的每一条建议,即使它是关于如何获得更多的见解(即记录)。

我使用spring boot 2.0.0M1(由start.spring.io生成)和被动(netty支持)org.springframework.web.reactive.function.client.WebClient

当调用刚刚返回JSON对象的旧的非响应服务时,即使被调用的服务完全响应(比较日志),WebClient也不会发出任何事件。

2017-05-29 17:33:30,016 | reactor-http-nio-2 | INFO | | onSubscribe([Fuseable] FluxOnAssembly.OnAssemblySubscriber) | myLogClass:145 | 2017-05-29 17:33:30,016 | reactor-http-nio-2 | INFO | | request(unbounded) | myLogClass:145 | 2017-05-29 17:33:30,016 | reactor-http-nio-2 | DEBUG | | onSubscribe([Fuseable] FluxOnAssembly.OnAssemblySubscriber) | client:125 | 2017-05-29 17:33:30,016 | reactor-http-nio-2 | DEBUG | | request(unbounded) | client:125 |

在调试这个问题时,我发现一些奇怪的东西让我觉得我只是以错误的方式使用这个实现:我在nettys池/通道处理中看到了来自另一个服务(我之前调用过)的URL(将添加我后来发现的类。

其他观察:

  • 当我将其他WebClient呼叫退出图片时,有问题的呼叫正常工作
  • 被叫服务在网关后面,因此它们(可能)具有相同的IP但不同的URI

所以到目前为止看似不太可能的想法:

  • netty频道/游泳池处理以某种方式拧紧我的网址
  • WebClient不应与不同的URI一起使用
  • 在从netty返回订阅者的路上有一个带有URI / IP映射的f'up

正如我在开始时所说:我感谢每一个帮助,当然我会添加你要求的任何信息来重现这个bugger。 关于如何为此编写测试的任何指针也是受欢迎的!

从信息开始:​​这就是我如何使用WebClient作为最小样本(我知道 - 我不打算以阻塞的方式使用它)。

return WebClient.create(serviceUri)
        .put()
        .uri("/mypath/" + id)
        .body(fromObject(request))
        .accept(APPLICATION_JSON)
        .header(HttpHeaders.CONTENT_TYPE, APPLICATION_JSON_VALUE)
        .header(HttpHeaders.COOKIE, createCookie())
        .retrieve()
        .bodyToMono(Response.class)
        .log("com.mypackage.myLogClass", Level.ALL)
        .block();

0 个答案:

没有答案