Поток BLOB-объектов как входная привязка в Azure Функция использует, какой LocationMode для получения входного потока - PullRequest
0 голосов
/ 27 апреля 2020

Я использую Blob в качестве входной привязки, чтобы получить поток BLOB-объектов в качестве входных данных, а затем выполняю обработку этого потока текста. Для аварийного восстановления мне нужно указать LocationMode (Microsoft. Azure .Storage.RetryPolicies) как «PrimaryThenSecondary», пока функция получает поток ввода. Что такое LocationMode по умолчанию в этом случае и как его изменить.

Ниже описано, как используется привязка входных данных BLOB-объектов -

[FunctionName("FunctionName")]
        public async Task RunAsync(
            [EventGridTrigger]EventGridEvent eventGridEvent,
            [Blob("{data.url}", FileAccess.Read, Connection = "BlobStorageConnectionString")]Stream input,
            [Table("TableName", Connection = "BlobStorageConnectionString")]CloudTable cloudTable,
            ILogger log)
        {
          //Some code

          //To get the data in blob
          StreamReader streamReader = new StreamReader(input);
          string blobData = await streamReader.ReadToEndAsync();
        }

Один из способов управления этим - получить CloudBlockBlob вместо потока в качестве ввода

[FunctionName("FunctionName")]
        public async Task RunAsync(
            [EventGridTrigger]EventGridEvent eventGridEvent,
            [Blob("{data.url}", FileAccess.Read, Connection = "BlobStorageConnectionString")]CloudBlockBlob input,
            [Table("TableName", Connection = "BlobStorageConnectionString")]CloudTable cloudTable,
            ILogger log)
        {
          //Some code to get the stream using 
          // Task DownloadToFileAsync(string path, FileMode mode, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext);
        }

1 Ответ

0 голосов
/ 28 апреля 2020

Что такое LocationMode по умолчанию в этом случае и как его изменить.

Вы можете использовать getLocationMode, чтобы получить режим местоположения по умолчанию для этого request.

И установите режим местоположения запроса с помощью BlobRequestOptions.LocationMode Property.

locationModeRequestOptions = new BlobRequestOptions() { LocationMode = RetryPolicies.LocationMode.PrimaryThenSecondary };
byteCount = blob.DownloadToByteArray(destinationArray, index: 0, accessCondition: null, options: locationModeRequestOptions);

LocationMode содержит PrimaryOnly, PrimaryThenSecondary, SecondaryOnly и SecondaryThenPrimary. Для более подробной информации, вы можете обратиться к этой статье .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...