Поделиться через


Триггер службы хранилища очередей Azure и привязки для обзора службы "Функции Azure"

Служба "Функции Azure" может выполняться при создании новых сообщений хранилища очередей Azure и может записывать сообщения очереди в функцию.

Действие Тип
Выполнение функции при изменениях данных хранилища очередей Триггер
Запись сообщений хранилища очередей Выходная привязка

Установка расширения

Устанавливаемый пакет расширения NuGet зависит от режима C#, который используется в приложении-функции:

Функции выполняются в изолированном рабочем процессе C#. Дополнительные сведения см. в руководстве по запуску Функции Azure C# в изолированном рабочем процессе.

Функциональные возможности расширения отличаются в зависимости от версии расширения:

В этой версии появляется возможность подключения с использованием удостоверения, а не секрета. Руководство по настройке приложений-функций с помощью управляемых удостоверений см. в руководстве по созданию приложения-функции с подключениями на основе удостоверений.

Эта версия позволяет выполнить привязку к типам из Azure.Storage.Blobs.

Добавьте расширение в проект, установив пакет NuGet версии 5.x.

С использованием .NET CLI:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues --version 5.0.0

Примечание.

Большие двоичные объекты Azure, очереди Azure и таблицы Azure теперь используют отдельные расширения и ссылаются по отдельности. Например, чтобы использовать триггеры и привязки для всех трех служб в приложении изолированного процесса .NET, необходимо добавить в проект следующие пакеты:

Ранее расширения, отправленные вместе как Microsoft.Azure.Functions.Worker.Extensions.Storage версии 4.x. Этот же пакет также имеет версию 5.x, которая ссылается на разделенные пакеты только для BLOB-объектов и очередей. При обновлении ссылок на пакет из более старых версий может потребоваться дополнительно ссылаться на новый пакет NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables . Кроме того, при ссылке на эти более новые разделенные пакеты убедитесь, что вы не ссылаетесь на более старую версию объединенного пакета хранилища, так как это приведет к конфликтам из-за двух определений одних и тех же привязок.

Установка пакета

Привязка хранилища BLOB-объектов входит в пакет расширений, который указан в файле проекта host.json. Возможно, потребуется изменить этот пакет, чтобы изменить версию привязки, а также в том случае если пакеты еще не установлены. Дополнительные сведения см. в разделе Пакет расширений.

В этой версии появляется возможность подключения с использованием удостоверения, а не секрета. Руководство по настройке приложений-функций с помощью управляемых удостоверений см. в руководстве по созданию приложения-функции с подключениями на основе удостоверений.

Эту версию расширения можно добавить из предварительной версии пакета расширений 3. Для этого необходимо добавить или заменить следующий код в файле host.json:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

Для получения дополнительных сведений см. раздел Обновление расширений.

Типы привязки

Типы привязки, поддерживаемые для .NET, зависят от версии расширения и режима выполнения C#, что может быть одним из следующих типов:

Изолированная библиотека классов рабочих процессов, скомпилированная функция C# выполняется в процессе, изолированном от среды выполнения.

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

Изолированный рабочий процесс поддерживает типы параметров в соответствии с таблицами ниже. Поддержка привязки к типам из Azure.Storage.Queues доступна в предварительной версии.

Триггер очереди

Триггер очереди может привязаться к следующим типам:

Тип Описание
string Содержимое сообщения в виде строки. Используется, когда сообщение является простым текстом..
byte[] Байт сообщения.
Сериализуемые в JSON типы Если сообщение очереди содержит данные JSON, функции пытаются десериализировать данные JSON в обычный тип объекта CLR (POCO).
QueueMessage1 Сообщение.
BinaryData1 Байт сообщения.

1 Для использования этих типов необходимо ссылаться на Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues 5.2.0 или более поздней версии , а также общие зависимости для привязок типов ПАКЕТА SDK.

Выходная привязка очереди

Если требуется, чтобы функция записывала одно сообщение, выходная привязка очереди может привязаться к следующим типам:

Тип Описание
string Содержимое сообщения в виде строки. Используется, когда сообщение является простым текстом.
byte[] Байт сообщения.
Сериализуемые в JSON типы Объект, представляющий содержимое сообщения JSON. Функции пытаются сериализовать обычный тип объекта CLR (POCO) в данные JSON.

Если требуется, чтобы функция записывала несколько сообщений, выходная привязка очереди может привязаться к следующим типам:

Тип Описание
T[] где T является одним из типов одного сообщения Массив, содержащий содержимое для нескольких сообщений. Каждая запись представляет одно сообщение.

Для других сценариев вывода создайте и используйте QueueClient с другими типами из Azure.Storage.Queues напрямую. Пример использования внедрения зависимостей для создания типа клиента из пакета SDK Azure см. в статье "Регистрация клиентов Azure".

Параметры файла host.json

В этом разделе описываются параметры конфигурации, доступные для этой привязки в версии 2.x или новее. Параметры в файле host.json применяются ко всем функциям в экземпляре приложения-функции. В приведенном ниже примере файла host.json содержатся только параметры этой привязки для версии 2.x или новее. Дополнительные сведения о параметрах конфигурации приложения-функции в версии 2.x или более поздней см. в статье Справочник по файлу host.json для Функций Azure.

Примечание.

Чтобы получить дополнительные сведения о файле host.json в Функции 1.x, см. статью host.json reference for Azure Functions 1.x(Справочник по файлу host.json для службы "Функции Azure" версии 1.x.).

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
Свойство По умолчанию Description
maxPollingInterval 00:01:00 Максимальный интервал между опросами очереди. Минимальный интервал — 00:00:00,100 (100 мс). Интервалы увеличиваются до значения maxPollingInterval. Значение по умолчанию для maxPollingInterval ― 00:01:00 (1 минута). Значение maxPollingInterval не должно быть меньше 00:00:00,100 (100 мс). В Функциях 2.x и более поздних версий используется тип данных TimeSpan. В Функциях 1.x это значение указано в миллисекундах.
visibilityTimeout 00:00:00 Интервал времени между повторными попытками, когда при обработке сообщения возникает сбой.
batchSize 16 Количество сообщений очереди, которые среда выполнения функций одновременно получает и обрабатывает в параллельном режиме. Когда число обрабатываемых сообщений достигает newBatchThreshold, среда выполнения получает следующий пакет и начинает обработку содержащихся в нем сообщений. Поэтому максимальное количество сообщений, одновременно обрабатываемых каждой функцией, равно batchSize плюс newBatchThreshold. Это ограничение применяется отдельно к каждой функции, активируемой с помощью очереди.

Если вы не хотите, чтобы сообщения из одной очереди обрабатывались параллельно, можно установить для batchSize значение 1. Тем не менее этот параметр позволяет исключить параллелизм при условии, что приложение-функция выполняется только на одной виртуальной машине. Если приложение-функция развернуто на нескольких виртуальных машинах, каждая машина может запускать один экземпляр каждой функции, активируемой с помощью очереди.

Максимальное значение batchSize — 32.
maxDequeueCount 5 Число повторных попыток обработки сообщения, прежде чем поместить его в очередь подозрительных сообщений.
newBatchThreshold N*batchSize/2 Каждый раз, когда количество сообщений, обрабатываемых параллельно, достигает этого числа, среда выполнения получает другой пакет.

N — количество виртуальных ЦП, доступных при работе в планах Службы приложений или уровня "Премиум". В плане потребления для N будет задано значение 1.
messageEncoding base64 Этот параметр доступен только в пакете расширений версии 5.0.0 и выше. Он представляет формат кодирования сообщений. Допустимые значения — base64 и none.

Следующие шаги