กำหนดค่าช่อง gRPC ของ Pub/Sub Java สำหรับ HTTP CONNECT
ติดตั้ง ProxyDetector ผ่านผู้ให้บริการช่อง GAX โดยคงที่อยู่ปลายทางและตัวตน TLS ของ Pub/Sub ไว้
ใช้ผู้ให้บริการช่องของไคลเอนต์ที่สร้างขึ้นเมื่อการเชื่อมต่อ 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 ของข้อมูลรับรองนั้น อยู่นอกผู้ให้บริการช่องที่แสดงไว้ที่นี่