Gamitin ang channel provider ng nabuong client kapag ang Pub/Sub Java gRPC connection ay nangangailangan ng HTTP CONNECT proxy. Ang ordinaryong URLConnection setting ay hindi nagtatatag ng channel configuration na ito.

Para sa 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 at TopicAdminSettings ay mga Pub/Sub v1 class; ang HttpConnectProxiedSocketAddress ay mula sa io.grpc at ang InetSocketAddress mula sa java.net. Ipinapalagay ng halimbawa ang karaniwang internet-address na target na ginagamit ng channel na ito.

Ibinabalik ng detector ang proxy connection address kasama ng orihinal na target. Kailangan ng gRPC builder na maresolba ang proxy address. Iwanan ang service endpoint bilang Pub/Sub: ang pagpapalit nito ng proxy hostname ay mawawala ang target ng serbisyo at ang inaasahang TLS identity.

Alisin ang username/password na mga tawag para sa proxy na walang authentication; ang mga pampublikong HTTP candidate ay nasa listahan ng mga HTTP proxy. Ang mga tawag na iyon ay ang HTTP CONNECT credential interface, hindi SOCKS o pangkalahatang NTLM implementation.

Kung ang pagkabigo ay nangyari bago ang gRPC operation habang ang isang hiwalay na nilikhang credential ay nakakuha ng token, suriin ang HTTP route ng credential na iyon. Nasa labas ito ng channel provider na ipinapakita rito.

Kaugnay na mga artikulo