HTTP CONNECT 用に Pub/Sub Java の gRPC チャネルを構成する
GAX チャネルプロバイダー経由で ProxyDetector を組み込み、Pub/Sub のターゲットアドレスと TLS 識別情報を保ちます。
Pub/Sub Java gRPC 接続で HTTP CONNECT プロキシが必要な場合は、生成済みクライアントのチャネルプロバイダーを使います。通常の URLConnection 設定ではこのチャネル構成は確立されません。
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 と TopicAdminSettings は Pub/Sub v1 のクラスで、HttpConnectProxiedSocketAddress は io.grpc から、InetSocketAddress は java.net から取得します。この例は、このチャネルが使う通常のインターネットアドレスのターゲットを前提としています。
検出器は元のターゲットとともにプロキシ接続アドレスを返します。gRPC ビルダーはプロキシアドレスが解決済みであることを要求します。サービスエンドポイントは Pub/Sub のままにしてください。プロキシのホスト名に置き換えると、サービスのターゲットと意図した TLS 識別情報が失われます。
認証なしのプロキシではユーザー名/パスワードの呼び出しを削除します。公開 HTTP 候補はHTTPプロキシ一覧にあります。これらの呼び出しは HTTP CONNECT の資格情報インターフェースであり、SOCKS や一般的な NTLM 実装ではありません。
gRPC 操作の前に失敗し、別途作成した資格情報でトークンを取得できる場合は、その資格情報の HTTP 経路を調べてください。ここに示すチャネルプロバイダーの範囲外です。