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

Utilisez cette instance bigQuery pour les opérations REST. projectId et credentials proviennent de la configuration existante de l'application.

La fabrique crée le transport HTTP qui atteint l'API BigQuery via l'intermédiaire. Le point de terminaison de l'API reste la destination ; le remplacer par l'adresse du proxy demande un autre service. Pour une route de proxy public autorisée vers BigQuery, la liste de proxys HTTP fournit des candidats pour les champs InetSocketAddress.

L'obtention ou le renouvellement des identifiants peut avoir son propre transport HTTP ; configurez donc cette entrée prise en charge lorsque ses requêtes ont besoin du proxy. Ces options REST ne configurent pas non plus de canal gRPC indépendant.

Pour la découverte système, java.net.useSystemProxies a un comportement propre à la plateforme et ne garantit pas qu'une valeur Docker HTTP_PROXY devienne la route de ce client. La fabrique explicite ci-dessus rend le transport REST choisi visible dès la construction.

Articles similaires