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 がすでに受け取ったクライアントは置き換わりません。

関連記事