Użyj dostawcy kanału wygenerowanego klienta, gdy połączenie Pub/Sub Java gRPC wymaga proxy HTTP CONNECT. Zwykłe ustawienie URLConnection nie tworzy tej konfiguracji kanału.

Dla klienta topic-admin:

var channelProvider = TopicAdminSettings
    .defaultGrpcTransportProviderBuilder()
    .setChannelConfigurator(channel -> channel.proxyDetector(target ->
        HttpConnectProxiedSocketAddress.newBuilder()
            .setProxyAddress(new InetSocketAddress("proxy.example", 8080))
            .setTargetAddress((InetSocketAddress) target)
            .setUsername(proxyUser)
            .setPassword(proxyPassword)
            .build()))
    .build();

var settings = TopicAdminSettings.newBuilder()
    .setTransportChannelProvider(channelProvider)
    .build();
try (TopicAdminClient client = TopicAdminClient.create(settings)) {
    // Perform the application's intended topic-admin operation here.
}

TopicAdminClient i TopicAdminSettings to klasy Pub/Sub v1; HttpConnectProxiedSocketAddress pochodzi z io.grpc, a InetSocketAddress z java.net. Przykład zakłada zwykły cel w postaci adresu internetowego używanego przez ten kanał.

Detektor zwraca adres połączenia proxy wraz z pierwotnym celem. Kreator gRPC wymaga, aby adres proxy został rozwiązany. Pozostaw punkt końcowy usługi jako Pub/Sub: zastąpienie go nazwą hosta proxy utraciłoby cel usługi i zamierzoną tożsamość TLS.

Usuń wywołania nazwy użytkownika/hasła dla proxy bez uwierzytelniania; publiczne kandydaty HTTP można znaleźć na liście proxy HTTP. Te wywołania to interfejs poświadczeń HTTP CONNECT, a nie SOCKS ani ogólna implementacja NTLM.

Jeśli błąd wystąpi przed operacją gRPC, a niezależnie utworzone poświadczenie uzyskuje token, sprawdź trasę HTTP tego poświadczenia. Znajduje się ona poza pokazanym tutaj dostawcą kanału.

Powiązane artykuły