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

Verwenden Sie diese bigQuery-Instanz für die REST-Vorgänge. projectId und credentials stammen aus der bestehenden Konfiguration der Anwendung.

Die Factory erstellt den HTTP-Transport, der die BigQuery-API über den Vermittler erreicht. Der API-Endpunkt bleibt das Ziel; ihn durch die Proxy-Adresse zu ersetzen, verlangt einen anderen Dienst. Für eine zulässige öffentliche Proxy-Route zu BigQuery liefert die HTTP-Proxy-Liste Kandidaten für die InetSocketAddress-Felder.

Der Bezug oder die Erneuerung von Anmeldedaten kann einen eigenen HTTP-Transport haben; konfigurieren Sie diese unterstützte Eingabe, wenn ihre Anfragen den Proxy benötigen. Diese REST-Optionen konfigurieren außerdem keinen unabhängigen gRPC-Kanal.

Für die Systemerkennung hat java.net.useSystemProxies plattformspezifisches Verhalten und garantiert nicht, dass ein Docker-HTTP_PROXY-Wert zur Route dieses Clients wird. Die explizite Factory oben macht den gewählten REST-Transport schon beim Aufbau sichtbar.

Ähnliche Artikel