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 अनुप्रयोगाच्या विद्यमान कॉन्फिगरेशनमधून येतात.

फॅक्टरी मध्यस्थामार्फत BigQuery API पर्यंत पोहोचणारा HTTP ट्रान्सपोर्ट तयार करते. API एंडपॉइंट गंतव्यच राहतो; त्याला प्रॉक्सी पत्त्याने बदलणे म्हणजे वेगळी सेवा मागणे. BigQuery कडे परवानगी असलेल्या सार्वजनिक प्रॉक्सी मार्गासाठी HTTP प्रॉक्सी सूची InetSocketAddress फील्डसाठी उमेदवार पुरवते.

क्रेडेन्शियल मिळवण्याचा किंवा नूतनीकरणाचा स्वतःचा HTTP ट्रान्सपोर्ट असू शकतो, त्यामुळे त्याच्या विनंत्याांना प्रॉक्सी आवश्यक असताना तो समर्थित इनपुट कॉन्फिगर करा. हे REST पर्याय स्वतंत्र gRPC चॅनेलही कॉन्फिगर करत नाहीत.

सिस्टम शोधण्यासाठी java.net.useSystemProxies चे वर्तन प्लॅटफॉर्म-विशिष्ट आहे आणि Docker HTTP_PROXY मूल्य हा क्लायंटचा मार्ग होईल याची हमी देत नाही. वरील स्पष्ट फॅक्टरी निवडलेला REST ट्रान्सपोर्ट बांधणीच्याच वेळी दृश्यमान करते.

संबंधित लेख