Pub/Sub Java gRPC bağlantısı bir HTTP CONNECT proxy'sine ihtiyaç duyduğunda oluşturulan istemcinin kanal sağlayıcısını kullanın. Sıradan bir URLConnection ayarı bu kanal yapılandırmasını kurmaz.

topic-admin istemcisi için:

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 ve TopicAdminSettings Pub/Sub v1 sınıflarıdır; HttpConnectProxiedSocketAddress io.grpc içinden, InetSocketAddress ise java.net içinden gelir. Örnek, bu kanalın kullandığı olağan internet adresi hedefini varsayar.

Algılayıcı, özgün hedefin yanında bir proxy bağlantı adresi döndürür. gRPC oluşturucusu proxy adresinin çözümlenmiş olmasını gerektirir. Hizmet uç noktasını Pub/Sub olarak bırakın: proxy ana bilgisayar adıyla değiştirmek hizmet hedefini ve amaçlanan TLS kimliğini kaybettirir.

Kimlik doğrulaması olmayan bir proxy için kullanıcı adı/parola çağrılarını kaldırın; genel HTTP adayları HTTP proxy listesinden bulunabilir. Bu çağrılar HTTP CONNECT kimlik bilgisi arayüzüdür; SOCKS veya genel bir NTLM uygulaması değildir.

Hata gRPC işleminden önce oluşur ve bağımsız olarak oluşturulmuş bir kimlik bilgisi belirteç alıyorsa, o kimlik bilgisinin HTTP yolunu inceleyin. Bu, burada gösterilen kanal sağlayıcısının dışındadır.

İlgili makaleler