A última linha é importante: derive o cliente do sistema de arquivos do serviço configurado, em vez de iniciar outro builder padrão:

var proxy = new ProxyOptions(
    ProxyOptions.Type.HTTP,
    new InetSocketAddress("proxy.example.net", 8080));

var http = new NettyAsyncHttpClientBuilder()
    .proxy(proxy)
    .build();

var credential = new ClientSecretCredentialBuilder()
    .tenantId(tenantId)
    .clientId(clientId)
    .clientSecret(clientSecret)
    .httpClient(http)
    .build();

var service = new DataLakeServiceClientBuilder()
    .endpoint(accountUrl)
    .credential(credential)
    .httpClient(http)
    .buildClient();

var filesystem = service.getFileSystemClient(fileSystemName);

service.getFileSystemClient(fileSystemName) transporta para o filho o pipeline HTTP do pai, o endpoint da conta e a configuração de armazenamento aplicável.

O exemplo fornece o mesmo http ao builder de credenciais porque a obtenção do token é outro caminho de solicitação. Um cliente do sistema de arquivos construído separadamente também deve receber o transporte pretendido; nenhum builder anterior cria um padrão global do SDK.

Use a URL da conta, o nome do sistema de arquivos e os valores de identidade da aplicação. ProxyOptions e os tipos de transporte Netty vêm do Azure Core, o builder de credenciais do Azure Identity e o builder do serviço do Azure Storage Data Lake; InetSocketAddress vem do java.net.

accountUrl continua sendo o endpoint de armazenamento, e o nome do sistema de arquivos seleciona o filho. Nenhum dos dois é o endereço do proxy. Com um endpoint de armazenamento acessível publicamente e permissão para usar um intermediário público, escolha o host e a porta do ProxyOptions na lista de proxies HTTP; mantenha as configurações de armazenamento e identidade.

Artigos relacionados