gRPC-Kanal von Pub/Sub Java für HTTP CONNECT konfigurieren
Installieren Sie einen ProxyDetector über den GAX-Kanalanbieter und behalten Sie Zieladresse und TLS-Identität von Pub/Sub bei.
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.