我已经实现了一项服务,它使 ReST 调用其他服务来实现其部分功能。我WebClient
为此使用了反应式,例如:
webClient.post()
.uri(....)
.contentType(....)
.accept(....)
.header(....)
.syncBody(someRequestObject)
.exchange()
.flatMap(someResponseHandler::handleResponse)
.doOnError(throwable -> {
// do interesting things depending on throwable
})
.retry(1, this::somePredicateDependingOnThrowable);
现在...我在 中处理 HTTP 状态someResponseHandler::handleResponse
,但我真正想知道的是,还有哪些其他类型的异常/错误可以从exchange()
- 即
- 如果我根本无法连接到下游服务,我会得到什么异常/错误?
- 如果连接尝试超时,我会得到哪些异常/错误?
- 如果我可以连接但在我得到响应之前请求超时,我会得到什么异常/错误?
显然,这些都不是 HTTP 状态代码 - 但我找不到任何文档来告诉我可以查找的内容。我只是没有找对地方吗?我查看了响应式 WebClient 的文档,并查看了 Reactor Netty 参考指南,但没有运气。
作为背景,这很重要,因为我们进行基于 HATEOAS 的服务发现——对于其中一些异常,我想触发重新发现,对于其中一些,我不这样做。