Żądanie OkHttp nie ma ogólnego mutowalnego pola proxy. Przed utworzeniem wywołania wybierz klienta z zamierzoną trasą.

Gdy reszta konfiguracji ma pozostać współdzielona, wyprowadź klienta z trasą z istniejącego klienta:

OkHttpClient routed = baseClient.newBuilder()
    .proxy(new Proxy(Proxy.Type.HTTP,
        new InetSocketAddress("203.0.113.10", 8080)))
    .build();

Punkt końcowy jest tylko przykładem. Publiczne punkty końcowe HTTP z listy proxy HTTP mogą wypełnić ten adres gniazda dla dozwolonej trasy usługi publicznej, pod warunkiem że polityka klienta bazowego nie przekazuje nowemu punktowi końcowemu żadnych danych uwierzytelniających proxy. OkHttp dokumentuje, że newBuilder współdzieli zasoby puli połączeń i wątków z klientem źródłowym. Nie oznacza to, że gniazdo ustanowione przez jedno proxy można przemianować na inną trasę. Kwalifikowalność połączenia nadal zależy od konfiguracji trasy i adresu.

W przypadku powtarzalnej pracy utrzymuj ograniczony zestaw klientów kluczowanych według polityki routingu, której naprawdę potrzebujesz. Unikaj nieograniczonej mapy, której klucze zawierają wszystkie kiedykolwiek zaobserwowane konta tymczasowe lub warianty proxy.

Współdzielenie zasobów wpływa też na zamykanie. Zamknięcie współdzielonego cache'u lub wyłączenie współdzielonego dyspozytora może wpłynąć na innych klientów pochodnych korzystających z tych zasobów. Nadaj własności zasobów jasny cykl życia na poziomie aplikacji, zamiast traktować każdego klienta pochodnego jako izolowany stos sieciowy.

Na koniec uwzględnij tożsamość wybranego proxy w metadanych samego wywołania. Globalna zmienna „ostatnio wybrane proxy” nie potrafi zidentyfikować trasy kilku równoczesnych żądań.

Powiązane artykuły