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 ट्रांसपोर्ट को निर्माण के समय ही दृश्य बनाती है।

संबंधित लेख