Reactor Netty의 proxy 메서드는 구성된 클라이언트를 반환한다
proxy()가 반환한 HttpClient를 ReactorClientHttpConnector에 넘기기 전에 보관하세요. 원래 클라이언트는 바뀌지 않습니다.
Reactor Netty의 HttpClient 구성 메서드는 구성된 클라이언트에 대한 참조를 반환합니다. 그 결과를 버리면 이전 참조는 예전 설정을 그대로 유지합니다.
다음 코드는 프록시 구성을 만든 뒤 그대로 잃어버립니다.
HttpClient client = HttpClient.create();
client.proxy(spec -> spec.type(ProxyProvider.Proxy.HTTP)
.host("proxy.example").port(8080));
대신 반환된 참조를 보관하세요.
client = client.proxy(spec -> spec.type(ProxyProvider.Proxy.HTTP)
.host("proxy.example").port(8080));
WebClient webClient = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(client))
.build();
여기서 다루는 타입은 Reactor Netty의 HttpClient와 ProxyProvider, 그리고 Spring의 WebClient와 ReactorClientHttpConnector입니다. HttpClient.create()에서 바로 메서드를 연결하는 것도 반환된 구성을 유지하는 또 하나의 방법입니다. 허용된 공개 API 요청에는 HTTP 프록시 목록이 예제의 호스트와 포트 후보를 제공합니다.
응답 타임아웃이나 리다이렉트 처리를 설정할 때도 같은 확인이 필요합니다. setter가 원본 객체를 바꾼다고 가정하지 말고 메서드의 반환 계약을 읽으세요.
어떤 참조가 connector에 도달하는지도 추적하세요. connector를 만든 뒤 지역 변수를 다시 할당해도 connector가 이미 받은 클라이언트가 교체되지는 않습니다.