Функции Azure. Как использовать POCO в выражении привязки с очередью хранилища Azure? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть определенная функция Azure, которая использует привязки триггера очереди хранения Azure и привязки ввода BLOB-объектов. У меня есть POCO для триггера очереди, но как я могу использовать это POCO с выражением привязки во входной привязке BLOB-объекта?

Architecuture:

  1. Функции Azure 2.x
  2. Прекомпилированная библиотека C # (.NET Core 2.1)

POCO:

public class ImageToProcess
{
    public int CompanyId { get; set; }
    public string FullImagePath { get; set; }
}

AzureФункция:

public static void Run(
    [QueueTrigger("profile-image-queue", Connection = "ProfileImageQueue")]ImageToProcess myQueueItem,
    [Blob("profileimages/{queueTrigger.FullImagePath}", FileAccess.Read, Connection = "ProfileImageBlobConnectionString")] Stream originalImage,
    ILogger log)
{
    log.LogInformation($"Started Processing profile image: myQueueItem");
}

Сообщение очереди:

{ 
    "CompanyId": 123,
    "FullImagePath": "CompanyA/profileImage-original.png" 
}

Сообщение об ошибке:

System.Private.CoreLib: исключение при выполнении функции: ProfileImageUploaded. Microsoft.Azure.WebJobs.Host: параметр привязки исключения 'originalImage'. Microsoft.Azure.WebJobs.Host: Ошибка при доступе к FullImagePath: свойство не существует.

Ресурсы, использованные для создания этого решения

  1. http://dontcodetired.com/blog/post/Improving-Azure-Functions-Blob-Trigger-Performance-and-Reliability-Part-2-Processing-Delays-and-Missed-Blobs
  2. https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue#trigger
  3. https://docs.microsoft.com/en-us/sandbox/functions-recipes/queue-storage#azure-storage-queue-trigger-using-a-poco

Другое потенциальное решение: Единственный другой вариант, который я вижу, это использоватьобязательные привязки, но я уверен, что могу использовать декларативные. https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#binding-at-runtime

1 Ответ

1 голос
/ 04 октября 2019

используйте следующее в привязке BLOB-объекта:

"profileimages/{FullImagePath}" 

Обратите внимание, если FullImagePath представляет адрес URL, чем:

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