BigQuery Java ના REST ક્લાયન્ટ સાથે પ્રોક્સી ટ્રાન્સપોર્ટ ફેક્ટરી જોડો
હાલની પ્રોજેક્ટ અને ક્રેડેન્શિયલ ગોઠવણી પર HttpTransportOptions વાપરો, અને ક્રેડેન્શિયલ પોતે ટોકન વિનંતીઓ કરે તો અલગ ટ્રાન્સપોર્ટ સેટઅપ કરો.
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 ટ્રાન્સપોર્ટને બાંધકામ વખતે જ દૃશ્યમાન બનાવે છે.