import java.net.InetSocketAddress;
import java.net.Proxy;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.cloud.http.HttpTransportOptions;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;

var proxy = new Proxy(Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));
var httpOptions = HttpTransportOptions.newBuilder()
    .setHttpTransportFactory(() ->
        new NetHttpTransport.Builder().setProxy(proxy).build())
    .build();

BigQuery bigQuery = BigQueryOptions.newBuilder()
    .setProjectId(projectId)
    .setCredentials(credentials)
    .setTransportOptions(httpOptions)
    .build()
    .getService();

Use esta instancia de bigQuery para las operaciones REST. projectId y credentials provienen de la configuración existente de la aplicación.

La fábrica crea el transporte HTTP que llega a la API de BigQuery a través del intermediario. El extremo de la API sigue siendo el destino; sustituirlo por la dirección del proxy pide un servicio distinto. Para una ruta de proxy público permitida hacia BigQuery, la lista de proxies HTTP proporciona candidatos para los campos InetSocketAddress.

La obtención o renovación de credenciales puede tener su propio transporte HTTP, así que configure esa entrada admitida cuando sus solicitudes necesiten el proxy. Estas opciones REST tampoco configuran un canal gRPC independiente.

Para el descubrimiento del sistema, java.net.useSystemProxies tiene un comportamiento específico de la plataforma y no garantiza que un valor de Docker HTTP_PROXY se convierta en la ruta de este cliente. La fábrica explícita anterior hace visible el transporte REST seleccionado en el momento de la construcción.

Artículos relacionados