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

Brug denne bigQuery-instans til REST-handlingerne. projectId og credentials kommer fra applikationens eksisterende konfiguration.

Fabrikken opretter den HTTP-transport, der gennem mellemleddet når BigQuery API. API-endepunktet forbliver destinationen; at erstatte det med proxyadressen beder om en anden tjeneste. Til en tilladt offentlig proxy-rute til BigQuery leverer HTTP-proxylisten kandidater til InetSocketAddress-felterne.

Hentning eller fornyelse af legitimationsoplysninger kan have sin egen HTTP-transport, så konfigurer det understøttede input, når dets anmodninger har brug for proxyen. Disse REST-indstillinger konfigurerer heller ikke en uafhængig gRPC-kanal.

Til systemopdagelse har java.net.useSystemProxies platformsafhængig adfærd og garanterer ikke, at en Docker HTTP_PROXY-værdi bliver denne klients rute. Den eksplicitte fabrik ovenfor gør den valgte REST-transport synlig ved opbygningen.

Relaterede artikler