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

Gunakan instans bigQuery ini untuk operasi REST. projectId dan credentials berasal dari konfigurasi aplikasi yang sudah ada.

Pabrik ini membuat transport HTTP yang mencapai API BigQuery melalui perantara. Endpoint API tetap menjadi tujuan; menggantinya dengan alamat proxy berarti meminta layanan lain. Untuk rute proxy publik yang diizinkan ke BigQuery, daftar proxy HTTP menyediakan kandidat untuk kolom InetSocketAddress.

Perolehan atau penyegaran kredensial dapat memiliki transport HTTP sendiri, jadi konfigurasikan input yang didukung itu ketika permintaannya membutuhkan proxy. Opsi REST ini juga tidak mengonfigurasi kanal gRPC independen.

Untuk penemuan sistem, java.net.useSystemProxies memiliki perilaku khusus platform dan tidak menjamin nilai Docker HTTP_PROXY menjadi rute klien ini. Pabrik eksplisit di atas membuat transport REST yang dipilih terlihat sejak konstruksi.

Artikel terkait