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


Привязки служебной шины Azure для службы "Функции Azure"

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

Действие Тип
Выполнение функции при создании сообщения очереди или раздела Служебной шины Триггер
Отправка сообщений Служебной шины Azure Выходная привязка

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

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

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

Добавьте расширение в проект, установив данный пакет NuGet.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изолированный рабочий процесс поддерживает типы параметров в соответствии с таблицами ниже.

Триггер служебной шины

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

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

При привязке ServiceBusReceivedMessageк ней можно также включить параметр типа ServiceBusMessageActions1,2 для выполнения действий по урегулированию сообщений.

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

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

При привязке ServiceBusReceivedMessage[]к ней можно также включить параметр типа ServiceBusMessageActions1,2 для выполнения действий по урегулированию сообщений.

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

2 При использовании ServiceBusMessageActionsзадайте AutoCompleteMessages для свойства атрибута триггера значение false. Это предотвращает попытку выполнения сообщений после успешного вызова функции.

выходная привязка служебная шина

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

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

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

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

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

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

В этом разделе описываются параметры конфигурации, доступные для этой привязки, которые зависят от среды выполнения и версии расширения.

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "clientRetryOptions":{
                "mode": "exponential",
                "tryTimeout": "00:01:00",
                "delay": "00:00:00.80",
                "maxDelay": "00:01:00",
                "maxRetries": 3
            },
            "prefetchCount": 0,
            "transportType": "amqpWebSockets",
            "webProxy": "https://proxyserver:8080",
            "autoCompleteMessages": true,
            "maxAutoLockRenewalDuration": "00:05:00",
            "maxConcurrentCalls": 16,
            "maxConcurrentSessions": 8,
            "maxMessageBatchSize": 1000,
            "minMessageBatchSize": 1,
            "maxBatchWaitTime": "00:00:30",
            "sessionIdleTimeout": "00:01:00",
            "enableCrossEntityTransactions": false
        }
    }
}

Параметры clientRetryOptions применяются только к взаимодействию со службой служебная шина. Они не влияют на повторные попытки выполнения функций. Дополнительные сведения см. в разделе "Повторные попытки".

Свойство По умолчанию Description
mode Exponential Режим, используемый для расчета интервалов повтора. В стандартном экспоненциальном режиме попытки будут повторяться с интервалом, основанном на стратегии отсрочки, в соответствии с которой время перед каждой следующей попыткой увеличивается. В режиме Fixed попытки будут повторяться через постоянные интервалы.
tryTimeout 00:01:00 Максимальное время ожидания операции за попытку.
delay 00:00:00.80 Коэффициент задержки или отсрочки, применяемый между повторными попытками.
maxDelay 00:01:00 Максимальная задержка между повторными попытками
maxRetries 3 Максимальное количество повторных попыток, после которого связанная операция будет считаться неудавшейся.
prefetchCount 0 Возвращает или задает число сообщений, которое получатель сообщений может запросить одновременно.
transportType amqpTcp Протокол и транспорт, которые используются для обмена данными со служебной шиной Azure. Доступные параметры: amqpTcp, amqpWebSockets
webProxy Н/Д Прокси-сервер, используемый для обмена данными со служебной шиной Azure через веб-сокеты. Прокси-сервер нельзя использовать с транспортом amqpTcp.
autoCompleteMessages true Определяет, следует ли автоматически завершать сообщения после успешного выполнения функции.
maxAutoLockRenewalDuration 00:05:00 Максимальный период времени, в течение которого блокировка сообщения будет продлеваться автоматически. Этот параметр применяется только для функций, получающих одно сообщение за раз.
maxConcurrentCalls 16 Максимальное количество одновременных обращений к обратному вызову, которое должно инициироваться для каждого масштабируемого экземпляра. По умолчанию в среде выполнения службы "Функции" одновременно обрабатывается несколько сообщений очереди. Этот параметр используется только в том случае, если isSessionsEnabled для триггера задано falseзначение свойства или атрибута. Этот параметр применяется только для функций, получающих одно сообщение за раз.
maxConcurrentSessions 8 Максимальное количество сеансов, которые могут обрабатываться одновременно на масштабируемый экземпляр. Этот параметр используется только в том случае, если isSessionsEnabled для триггера задано trueзначение свойства или атрибута. Этот параметр применяется только для функций, получающих одно сообщение за раз.
maxMessageBatchSize 1000 Максимальное количество сообщений, которые будут передаваться при каждом вызове функции. Этот параметр применяется только для функций, которые получают пакет сообщений.
minMessageBatchSize1 1 Минимальное количество сообщений, необходимых в пакете. Минимальное значение применяется только в том случае, если функция получает несколько сообщений и должна быть меньше maxMessageBatchSize.
Минимальный размер не гарантируется строго. Частичный пакет отправляется, когда полный пакет не может быть подготовлен до maxBatchWaitTime истечения срока действия.
maxBatchWaitTime1 00:00:30 Максимальный интервал, который триггер должен ждать заполнения пакета перед вызовом функции. Время ожидания считается только в том случае, если minMessageBatchSize больше 1 и игнорируется в противном случае. Если сообщения minMessageBatchSize были доступны до истечения времени ожидания, функция вызывается с частичным пакетом. Максимально допустимое время ожидания составляет 50% от длительности блокировки сообщения сущности, то есть максимально допустимое значение составляет 2 минуты и 30 секунд. В противном случае можно получить исключения блокировки.

ПРИМЕЧАНИЕ. Этот интервал не является строгой гарантией точного времени вызова функции. Существует небольшое поле ошибки из-за точности таймера.
sessionIdleTimeout Н/Д Максимальное время ожидания сообщения для активного сеанса. По истечении этого времени сеанс будет закрыт, а функция попытается обработать другой сеанс.
enableCrossEntityTransactions false Следует ли включать транзакции, охватывающие несколько сущностей в пространстве имен служебной шины Azure.

1 Использование minMessageBatchSize и maxBatchWaitTime требует версии 5.10.0 Microsoft.Azure.WebJobs.Extensions.ServiceBus пакета или более поздней версии.

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