Gebruik de kanaalprovider van de gegenereerde client wanneer een Pub/Sub Java gRPC-verbinding een HTTP CONNECT-proxy nodig heeft. Een gewone URLConnection-instelling legt deze kanaalconfiguratie niet aan.

Voor de 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 en TopicAdminSettings zijn Pub/Sub v1-klassen; HttpConnectProxiedSocketAddress komt uit io.grpc en InetSocketAddress uit java.net. Het voorbeeld gaat uit van het gebruikelijke internetadresdoel dat dit kanaal gebruikt.

De detector retourneert een proxyverbindingsadres naast het oorspronkelijke doel. De gRPC-builder vereist dat het proxyadres wordt opgelost. Laat het service-eindpunt Pub/Sub blijven: vervanging door de proxynaam zou het servicedoel en de beoogde TLS-identiteit verliezen.

Verwijder de gebruikersnaam-/wachtwoordaanroepen voor een niet-geverifieerde proxy; openbare HTTP-kandidaten staan in de lijst met HTTP-proxy’s. Die aanroepen zijn de HTTP CONNECT-referentie-interface, niet SOCKS of een algemene NTLM-implementatie.

Als de fout optreedt vóór de gRPC-bewerking terwijl een afzonderlijk aangemaakte referentie een token verkrijgt, inspecteer dan de HTTP-route van die referentie. Die valt buiten de hier getoonde kanaalprovider.

Gerelateerde artikelen