Spring WebClient 프록시 오류: 리액티브 처리와 로깅의 차이
프록시 실패 시 WebClient의 리액티브 오류 신호, 전송 계층 로깅, HTTP 상태 처리를 구분합니다.
전송 계층이 실패한 프록시 연결을 로그에 남기는 동안 애플리케이션도 그 리액티브 오류를 받아 처리할 수 있습니다. 로그 항목만으로는 애플리케이션의 핸들러가 건너뛰어졌다고 입증할 수 없습니다.
실제로 구독되는 체인에서 오류 신호를 추적하세요. 단지 Mono를 구성하는 코드를 감싼 try/catch는 이후의 네트워크 실패를 처리하는 것과 범위가 다릅니다.
| 연산자 | 효과 |
|---|---|
| doOnError | 오류가 계속되는 동안 부수 효과를 수행한다 |
| onErrorMap | 한 오류를 다른 오류로 변환한다 |
| onErrorResume | 대체 발행자로 전환한다 |
애플리케이션에 필요한 동작을 선택하세요. 지표를 기록하는 데 가짜 성공 콘텐츠를 반환할 필요는 없습니다. 대체 응답은 의도된 애플리케이션 결과여야 하며, 실패한 경로를 숨기는 수단이어서는 안 됩니다.
전송 예외와 수신된 HTTP 오류 상태도 구분하세요. 프록시 연결은 일반적인 목적지 응답이 존재하기 전에 실패할 수 있으므로 HTTP 상태 핸들러가 검사할 것이 없을 수 있습니다. 하위 수준의 실패를 진단할 때 WebClientRequestException의 원인을 보존하세요.
결과를 이해한 뒤에만 로깅을 조정하세요. 전송 로거를 완전히 끄면 이후의 타임아웃, TLS 문제, 인증 실패에 필요한 증거가 사라질 수 있으며, 리액티브 파이프라인의 동작은 바뀌지 않습니다.