जब किसी Pub/Sub Java gRPC कनेक्शन को HTTP CONNECT प्रॉक्सी की आवश्यकता हो, तब जनरेट किए गए क्लाइंट के चैनल प्रदाता का उपयोग करें। सामान्य URLConnection सेटिंग यह चैनल कॉन्फ़िगरेशन स्थापित नहीं करती।

topic-admin क्लाइंट के लिए:

var channelProvider = TopicAdminSettings
    .defaultGrpcTransportProviderBuilder()
    .setChannelConfigurator(channel -> channel.proxyDetector(target ->
        HttpConnectProxiedSocketAddress.newBuilder()
            .setProxyAddress(new InetSocketAddress("proxy.example", 8080))
            .setTargetAddress((InetSocketAddress) target)
            .setUsername(proxyUser)
            .setPassword(proxyPassword)
            .build()))
    .build();

var settings = TopicAdminSettings.newBuilder()
    .setTransportChannelProvider(channelProvider)
    .build();
try (TopicAdminClient client = TopicAdminClient.create(settings)) {
    // Perform the application's intended topic-admin operation here.
}

TopicAdminClient और TopicAdminSettings Pub/Sub v1 क्लास हैं; HttpConnectProxiedSocketAddress io.grpc से आता है और InetSocketAddress java.net से। उदाहरण इस चैनल द्वारा उपयोग किए जाने वाले सामान्य इंटरनेट-पता लक्ष्य को मानता है।

डिटेक्टर मूल लक्ष्य के साथ एक प्रॉक्सी कनेक्शन पता लौटाता है। gRPC बिल्डर को प्रॉक्सी पता हल होना आवश्यक है। सेवा एंडपॉइंट को Pub/Sub ही रहने दें: इसे प्रॉक्सी होस्टनाम से बदलने पर सेवा लक्ष्य और इच्छित TLS पहचान खो जाएगी।

अप्रमाणित प्रॉक्सी के लिए उपयोगकर्ता नाम/पासवर्ड कॉल हटाएँ; सार्वजनिक HTTP उम्मीदवार HTTP प्रॉक्सी सूची में मिलते हैं। वे कॉल HTTP CONNECT क्रेडेंशियल इंटरफ़ेस हैं, SOCKS या सामान्य NTLM कार्यान्वयन नहीं।

यदि विफलता gRPC कार्रवाई से पहले होती है जबकि स्वतंत्र रूप से बनाया गया क्रेडेंशियल टोकन प्राप्त करता है, तो उस क्रेडेंशियल का HTTP मार्ग जाँचें। यह यहाँ दिखाए गए चैनल प्रदाता से बाहर है।

संबंधित लेख