Хранилище Azure - не сделан запрос на перечисление контейнера - PullRequest
2 голосов
/ 27 июня 2019

Я пытаюсь выполнить следующий запрос от двух разных классов (тестовый класс и сервисный класс) -

serviceURL.listContainersSegment(null, new ListContainersOptions()).blockingGet().body().containerItems().forEach(container -> {
        System.out.println("createServiceUrl | Container "+container.name());
    });

Результаты тестового класса:

Запрос выполняется должным образом, и я получаю имена контейнеров в моей учетной записи хранения Azure.Запрос выполнен и проверен с использованием Wireshark

Результаты класса обслуживания:

  • Запрос не сделан из этого класса, провереноэто с помощью Wireshark.
  • Поток блокируется и не генерируется никаких исключений, или не возникает других ошибок ни в одном из файлов журнала, в которые записываются журналы.

NOTE : класс обслуживания представлен в виде jar и развернут как вертикаль Vertx в другом приложении.

Детали кода: Эта функция просто возвращает объект ServiceURL.Этот метод вызывается из другого метода onRequest (упомянутого далее) в том же классе.

 * Create Service URL
 * @param storageAccountName
 * @param storageAccountKey
 * @param endpointUrl
 * @return
 * @throws InvalidKeyException
 * @throws MalformedURLException
 */
private ServiceURL createServiceUrl(String storageAccountName, String storageAccountKey, String endpointUrl, String endpointProtocol) throws InvalidKeyException, MalformedURLException {
    ServiceURL serviceURL = null;
    try {
        FlintLogger.JOB_LOGGER.info("createServiceUrl | Creating Service URL");
        FlintLogger.JOB_LOGGER.debug("createServiceUrl | Creating Service URL with inputs: \n"+storageAccountName+"\n"+storageAccountKey+"\n"+endpointUrl+"\n"+endpointProtocol);

        // Use your Storage account's name and key to create a credential object; this is used to access your account.
        SharedKeyCredentials credential = new SharedKeyCredentials(storageAccountName, storageAccountKey);
        FlintLogger.JOB_LOGGER.info("createServiceUrl | Storage credentials created "+credential.toString());

        /*
            Create a request pipeline that is used to process HTTP(S) requests and responses. It requires your accont
            credentials. In more advanced scenarios, you can configure telemetry, retry policies, logging, and other
            options. Also you can configure multiple pipelines for different scenarios.
         */
        HttpPipeline pipeline = StorageURL.createPipeline(credential, new PipelineOptions());
        FlintLogger.JOB_LOGGER.info("createServiceUrl | Created Http pipeline "+pipeline);

        /*
            From the Azure portal, get your Storage account blob service URL endpoint.
            The URL typically looks like this:
         */
        URL url = new URL(String.format(Locale.ROOT, endpointProtocol+"://%s.blob."+endpointUrl, storageAccountName));
        FlintLogger.JOB_LOGGER.debug("createServiceUrl | Created Url with specified endpoint "+url.toString());

        // Create a ServiceURL object that wraps the service URL and a request pipeline.
        serviceURL = new ServiceURL(url, pipeline);
        FlintLogger.JOB_LOGGER.debug("createServiceUrl | ServiceUrl structure: "+serviceURL.toURL().toString());


        FlintLogger.JOB_LOGGER.info("createServiceUrl | Created service URL");

    }catch(Exception e) {
        FlintLogger.JOB_LOGGER.error("createServiceUrl | Exception: ",e.getMessage());
    }
    return serviceURL;
}

Метод onRequest:

try {
            // Create Service URL
            ServiceURL serviceUrl = createServiceUrl(storageAccountName, storageAccountKey, endpointUrl, endpointProtocol);
            FlintLogger.JOB_LOGGER.debug("onRequest | serviceUrl "+serviceUrl.toURL());
            FlintLogger.JOB_LOGGER.debug("onRequest | serviceUrl Before request"+serviceUrl.toURL());

            try {
            serviceUrl.listContainersSegment(null, new ListContainersOptions()).blockingGet().body().containerItems().forEach(container -> {
                FlintLogger.JOB_LOGGER.debug("onRequest | Blocking get : "+container.name());
            });
            }catch(Exception e) {
                FlintLogger.JOB_LOGGER.error("Error in thread blocking request ", e.getLocalizedMessage());
            }
...