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

REST ਕਾਰਵਾਈਆਂ ਲਈ ਇਹ bigQuery ਵਰਤੋ। projectId ਅਤੇ credentials ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਮੌਜੂਦਾ ਕਨਫਿਗਰੇਸ਼ਨ ਤੋਂ ਆਉਂਦੇ ਹਨ।

ਫੈਕਟਰੀ ਉਹ HTTP ਟ੍ਰਾਂਸਪੋਰਟ ਬਣਾਉਂਦੀ ਹੈ ਜੋ ਵਿਚੋਲੇ ਰਾਹੀਂ BigQuery API ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ। API ਐਂਡਪੌਇੰਟ ਮੰਜ਼ਿਲ ਹੀ ਰਹਿੰਦਾ ਹੈ; ਇਸਨੂੰ ਪ੍ਰੌਕਸੀ ਪਤੇ ਨਾਲ ਬਦਲਣਾ ਕਿਸੇ ਹੋਰ ਸੇਵਾ ਦੀ ਮੰਗ ਕਰਨਾ ਹੈ। BigQuery ਵੱਲ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਜਨਤਕ ਪ੍ਰੌਕਸੀ ਰਸਤੇ ਲਈ HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ InetSocketAddress ਖੇਤਰਾਂ ਲਈ ਉਮੀਦਵਾਰ ਦਿੰਦੀ ਹੈ।

ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਪ੍ਰਾਪਤ ਕਰਨ ਜਾਂ ਨਵਿਆਉਣ ਦਾ ਆਪਣਾ HTTP ਟ੍ਰਾਂਸਪੋਰਟ ਹੋ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਜਦੋਂ ਇਸ ਦੀਆਂ ਬੇਨਤੀਆਂ ਨੂੰ ਪ੍ਰੌਕਸੀ ਚਾਹੀਦੀ ਹੋਵੇ ਤਾਂ ਉਹ ਸਮਰਥਿਤ ਇਨਪੁਟ ਸੈੱਟ ਕਰੋ। ਇਹ REST ਚੋਣਾਂ ਸੁਤੰਤਰ gRPC ਚੈਨਲ ਵੀ ਸੈੱਟ ਨਹੀਂ ਕਰਦੀਆਂ।

ਸਿਸਟਮ ਖੋਜ ਲਈ java.net.useSystemProxies ਦਾ ਵਿਵਹਾਰ ਪਲੇਟਫਾਰਮ-ਖਾਸ ਹੈ ਅਤੇ ਇਹ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ ਕਿ Docker HTTP_PROXY ਮੁੱਲ ਇਸ ਕਲਾਇੰਟ ਦਾ ਰਸਤਾ ਬਣੇਗਾ। ਉੱਪਰਲੀ ਸਪੱਸ਼ਟ ਫੈਕਟਰੀ ਚੁਣੇ ਗਏ REST ਟ੍ਰਾਂਸਪੋਰਟ ਨੂੰ ਬਣਾਉਣ ਸਮੇਂ ਹੀ ਦਿੱਸਣਯੋਗ ਬਣਾਉਂਦੀ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ