Usa el proveedor de canales del cliente generado cuando una conexión Pub/Sub Java gRPC necesite un proxy HTTP CONNECT. Una configuración normal de URLConnection no establece esta configuración de canal.

Para el cliente 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 y TopicAdminSettings son clases de Pub/Sub v1; HttpConnectProxiedSocketAddress proviene de io.grpc y InetSocketAddress de java.net. El ejemplo supone el destino habitual de dirección de internet que usa este canal.

El detector devuelve una dirección de conexión del proxy junto con el destino original. El constructor de gRPC exige que la dirección del proxy esté resuelta. Deja el extremo del servicio como Pub/Sub: sustituirlo por el nombre de host del proxy perdería el destino del servicio y la identidad TLS prevista.

Elimina las llamadas de usuario/contraseña para un proxy sin autenticación; los candidatos HTTP públicos están en la lista de proxies HTTP. Esas llamadas son la interfaz de credenciales de HTTP CONNECT, no SOCKS ni una implementación general de NTLM.

Si el fallo ocurre antes de la operación gRPC mientras unas credenciales creadas de forma independiente obtienen un token, inspecciona la ruta HTTP de esas credenciales. Está fuera del proveedor de canales mostrado aquí.

Artículos relacionados