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();

Gebruik deze bigQuery-instantie voor de REST-bewerkingen. projectId en credentials komen uit de bestaande configuratie van de toepassing.

De fabriek maakt het HTTP-transport dat via de tussenlaag de BigQuery-API bereikt. Het API-eindpunt blijft de bestemming; het vervangen door het proxyadres vraagt om een andere dienst. Voor een toegestane route via een openbare proxy naar BigQuery levert de HTTP-proxylijst kandidaten voor de InetSocketAddress-velden.

Het verkrijgen of vernieuwen van inloggegevens kan een eigen HTTP-transport hebben, dus configureer die ondersteunde invoer wanneer de aanvragen de proxy nodig hebben. Deze REST-opties configureren ook geen onafhankelijk gRPC-kanaal.

Voor systeemdetectie heeft java.net.useSystemProxies platformspecifiek gedrag en garandeert het niet dat een Docker-waarde voor HTTP_PROXY de route van deze client wordt. De expliciete fabriek hierboven maakt het gekozen REST-transport al bij het opbouwen zichtbaar.

Gerelateerde artikelen