Een proxytransportfabriek koppelen aan de REST-client van BigQuery Java
Gebruik HttpTransportOptions op de bestaande project- en inloggegevensconfiguratie, met een aparte transportconfiguratie als de inloggegevens zelf tokenaanvragen doen.
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.