当将文档保存到mongodb时,我正在测试一些错误处理。为了触发错误,在spring成功启动之后,我停止了mongo服务器。然后我发送了保存文档的请求。
在代码失败后不久,因为它无法连接到mongo服务器,但是请求需要65+秒才能返回postman中的错误。
是否有一种方法可以在抛出异常后立即返回错误?例如ConnectException
当前处理保存错误的代码:
return myRepository
.save(doc)
.map { ResponseEntity(mapOf(Pair("id", it.id)), HttpStatus.OK) }
.onErrorReturn( ResponseEntity(emptyMap(), HttpStatus.INTERNAL_SERVER_ERROR))

发布于 2018-10-07 10:10:47
由于超时处于mongo级别,所以不能仅针对端点重写超时,但可以在反应性管道中引入另一个超时,如下所示:
return myRepository
.save(doc)
.timeout(Duration.ofSeconds(1))
.onErrorReturn( ResponseEntity(emptyMap(), HttpStatus.INTERNAL_SERVER_ERROR))
.map { ResponseEntity(mapOf(Pair("id", it.id)), HttpStatus.OK) }注意!引入的超时解决了您快速返回错误的问题,但是下划线mongo连接还在等待,直到它到达mongo超时为止。可能更好的选择可能是调优默认的mongo连接超时,并使用反应性管道让web服务器线程很快释放。
我希望它能帮到你
https://stackoverflow.com/questions/52687211
复制相似问题