Привязки служебной шины 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
пакета или более поздней версии.