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 ID를 잃게 됩니다.

인증이 없는 프록시에서는 사용자 이름/비밀번호 호출을 제거하세요. 공개 HTTP 후보는 HTTP 프록시 목록에서 찾을 수 있습니다. 이 호출은 HTTP CONNECT 자격 증명 인터페이스이며 SOCKS나 일반 NTLM 구현이 아닙니다.

gRPC 작업 전에 실패하면서 별도로 만든 자격 증명이 토큰을 얻는다면 그 자격 증명의 HTTP 경로를 확인하세요. 이는 여기에 표시된 채널 공급자 밖의 일입니다.

관련 글