ใช้ผู้ให้บริการช่องของไคลเอนต์ที่สร้างขึ้นเมื่อการเชื่อมต่อ 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 ของข้อมูลรับรองนั้น อยู่นอกผู้ให้บริการช่องที่แสดงไว้ที่นี่

บทความที่เกี่ยวข้อง