Gunakan penyedia kanal klien yang dihasilkan saat koneksi Pub/Sub Java gRPC membutuhkan proksi HTTP CONNECT. Pengaturan URLConnection biasa tidak membentuk konfigurasi kanal ini.

Untuk klien 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 dan TopicAdminSettings adalah kelas Pub/Sub v1; HttpConnectProxiedSocketAddress berasal dari io.grpc dan InetSocketAddress dari java.net. Contoh ini mengasumsikan tujuan alamat internet normal yang dipakai kanal ini.

Detektor mengembalikan alamat koneksi proksi bersama tujuan aslinya. Pembangun gRPC mengharuskan alamat proksi diresolusikan. Biarkan titik akhir layanan tetap Pub/Sub: menggantinya dengan nama host proksi akan kehilangan tujuan layanan dan identitas TLS yang dimaksud.

Hapus panggilan nama pengguna/kata sandi untuk proksi tanpa autentikasi; kandidat HTTP publik tersedia di daftar proxy HTTP. Panggilan tersebut adalah antarmuka kredensial HTTP CONNECT, bukan SOCKS atau implementasi NTLM umum.

Jika kegagalan terjadi sebelum operasi gRPC sementara kredensial yang dibuat secara terpisah memperoleh token, periksa rute HTTP kredensial tersebut. Itu berada di luar penyedia kanal yang ditunjukkan di sini.

Artikel terkait