spring-boot - Spring reactive Mono:blockOptional 与 spring actuator 冲突
问题描述
我正在将 json 数组响应映射到反应堆世界,但遇到如下问题:
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())!!
如果我添加弹簧执行器的此属性,此代码将不起作用
management.endpoints.enabled-by-default=true
没有任何异常,Netty 服务器无法启动。
但是当我更改为
management.endpoints.enabled-by-default=false
Netty 开局不错
请问这个问题有什么想法吗?
** 更新 **
当我添加一些超时值时.blockOptional(Duration.ofSeconds(60)) //60 seconds
val responses = configurationClient.getData() // return json array object
.flatMap { it.bodyToMono(object : ParameterizedTypeReference<GeneralResponse<Array<ObjectResponse>>>() {})
}
.map { it.data }
.blockOptional(Duration.ofSeconds(60))
.get()
我很确定 Mono 和 Spring 执行器management.endpoints.enabled-by-default=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-by-default=false一切正常
解决方案
问题解决了。
根本原因:
这不是 Mono:blockOptional 或 Spring 执行器单独的错误。
此配置management.endpoints.enabled-by-default=true与现有执行器端点配置冲突
解决方案:
清理弹簧执行器配置属性以避免这种冲突然后 Mono:blockOptional 工作得很好
推荐阅读
- excel - Excel:如果另一个单元格包含某个值,则添加值
- c# - Microsoft.AspNetCore.SignalR HubCallerContext 上下文返回 null
- symfony - FOSUserBundle,EventListener注册用户
- php - 添加第二个字段类别 Prestashop 1.7
- android - 无法解决:com.microsoft.appcenter:appcenter-analytics:1.5.0
- amazon-web-services - AWS S3:添加 aws:Referer 语句中断 ListObjects(403 禁止)
- c# - EPPlus:在单元格中定位图像
- java - Hazelcast IMap.tryLock 与 tryTimeout 100 磨机卡住超过 1 分钟
- grails - 如何在 Grails 2.4.5 中使用复合 id 模拟这个对象?
- javascript - 找到 JWT 后如何导航一次?