Verwenden Sie den Kanalanbieter des generierten Clients, wenn eine Pub/Sub-Java-gRPC-Verbindung einen HTTP-CONNECT-Proxy benötigt. Eine gewöhnliche URLConnection-Einstellung richtet diese Kanalkonfiguration nicht ein.

Für den topic-admin-Client:

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 und TopicAdminSettings sind Pub/Sub-v1-Klassen; HttpConnectProxiedSocketAddress stammt aus io.grpc und InetSocketAddress aus java.net. Das Beispiel setzt das übliche Internetadressziel dieses Kanals voraus.

Der Detektor liefert eine Proxy-Verbindungsadresse neben dem ursprünglichen Ziel. Der gRPC-Builder verlangt, dass die Proxyadresse aufgelöst wird. Belassen Sie den Dienstendpunkt bei Pub/Sub: Ein Ersetzen durch den Proxy-Hostnamen würde das Dienstziel und die beabsichtigte TLS-Identität verlieren.

Entfernen Sie die Benutzername-/Passwort-Aufrufe für einen nicht authentifizierten Proxy; öffentliche HTTP-Kandidaten finden Sie in der HTTP-Proxy-Liste. Diese Aufrufe sind die HTTP-CONNECT-Anmeldedaten-Schnittstelle, nicht SOCKS oder eine allgemeine NTLM-Implementierung.

Tritt der Fehler vor der gRPC-Operation auf, während ein unabhängig erzeugtes Anmeldedatum ein Token erhält, prüfen Sie die HTTP-Route dieses Anmeldedatums. Sie liegt außerhalb des hier gezeigten Kanalanbieters.

Ähnliche Artikel