Spring WebClient 代理错误:响应式处理与日志记录的区分
在代理故障时区分 WebClient 的响应式错误信号、传输层日志记录和 HTTP 状态处理。
传输层可以记录一次失败的代理连接,同时应用也接收并处理该响应式错误。仅凭日志条目无法证明应用的处理程序被跳过。
请沿着真正被订阅的链追踪错误信号。仅围绕构建 Mono 的代码加 try/catch,与处理之后的网络故障属于不同范围。
| 操作符 | 效果 |
|---|---|
| doOnError | 在错误继续传递时执行副作用 |
| onErrorMap | 将一个错误转换为另一个错误 |
| onErrorResume | 切换到备用发布者 |
选择应用需要的行为。记录指标并不意味着要返回伪造的成功内容。替代响应应是应用有意给出的结果,而不是掩盖失败路由的手段。
还要区分传输异常与收到的 HTTP 错误状态。代理连接可能在目标返回普通响应之前就已失败,因此 HTTP 状态处理程序可能没有任何内容可检查。诊断更底层故障时,请保留 WebClientRequestException 的原因。
只有在理解结果之后才调整日志记录。完全关闭传输层日志记录器可能移除后续超时、TLS 问题或认证失败所需的证据,却不会改变响应式管道的行为。