Spring boot 弹簧反应式单声道:与弹簧执行器的可选冲突

Spring boot 弹簧反应式单声道:与弹簧执行器的可选冲突,spring-boot,reactive-programming,spring-webflux,spring-actuator,Spring Boot,Reactive Programming,Spring Webflux,Spring Actuator,我正在将json数组响应映射到reactor world,但存在如下问题: val responses = configurationClient.getData() // return json array object .flatMap { it.bodyToMono(object : ParameterizedTypeReference<GeneralResponse<Array<ObjectResponse>>>()

我正在将json数组响应映射到reactor world,但存在如下问题:

    val responses = configurationClient.getData() // return json array object 
            .flatMap { it.bodyToMono(object : ParameterizedTypeReference<GeneralResponse<Array<ObjectResponse>>>() {}) 
             }
            .map { it.data }
            .blockOptional()  // exception this line 
            .orElse(emptyArray())!!
我很确定Mono和Spring执行器之间存在冲突management.endpoints.enabled默认为true

at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:886)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:790)
    ... 20 common frames omitted
Caused by: java.lang.IllegalStateException: Timeout on blocking read for 60000 MILLISECONDS
    at reactor.core.publisher.BlockingOptionalMonoSubscriber.blockingGet(BlockingOptionalMonoSubscriber.java:162)
    at reactor.core.publisher.Mono.blockOptional(Mono.java:1755)
注意
configurationClient.getData()
这只是一个GET请求返回200-[{…}]

  • 如果我用的话,一切都能用 management.endpoints.enabled默认值=false
    • 问题解决了

      根本原因:

      这不是Mono:block可选或单独使用弹簧执行器的缺陷

      此配置management.endpoints.enabled默认值=true与现有执行器端点配置冲突

      解决方案:


      清理弹簧执行器配置属性以避免此冲突然后Mono:Block可选工作正常

      什么是configurationClient?得到的异常是什么?configurationClient.getData()//返回json对象这将返回一个json对象数组
      at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:886)
          at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:790)
          ... 20 common frames omitted
      Caused by: java.lang.IllegalStateException: Timeout on blocking read for 60000 MILLISECONDS
          at reactor.core.publisher.BlockingOptionalMonoSubscriber.blockingGet(BlockingOptionalMonoSubscriber.java:162)
          at reactor.core.publisher.Mono.blockOptional(Mono.java:1755)