Служба "Функции Azure" интегрируются со Служебной шиной Azure с помощью триггеров и привязок. Интеграция со служебной шиной позволяет создавать функции, которые реагируют на сообщения очереди или раздела и отправляют сообщения в них.
Действие |
Тип |
Выполнение функции при создании сообщения очереди или раздела Служебной шины |
Триггер |
Отправка сообщений Служебной шины Azure |
Выходная привязка |
Установка расширения
Устанавливаемый пакет расширения NuGet зависит от режима C#, который используется в приложении-функции:
Функциональные возможности расширения отличаются в зависимости от версии расширения:
Для работы с триггером и привязками требуется ссылка на соответствующий пакет NuGet. Установите пакет NuGet версии < 5.x.
Добавьте расширение в проект, установив пакет NuGet версии 4.x.
Функции версии 1.x не поддерживают изолированный рабочий процесс.
Установка пакета
Чтобы использовать это расширение привязки в приложении, убедитесь, что файл host.json в корне проекта содержит следующую extensionBundle
ссылку:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
В этом примере значение указывает узлу version
функций использовать версию пакета, которая по крайней мере [4.0.0, 5.0.0)
меньше4.0.0
, чем , которая включает все потенциальные версии 4.x.5.0.0
Эта нотация эффективно поддерживает ваше приложение в последней доступной дополнительной версии пакета расширений версии 4.x.
По возможности следует использовать последнюю версию пакета расширений и разрешить среде выполнения автоматически поддерживать последнюю дополнительную версию. Содержимое последнего пакета можно просмотреть на странице выпуска пакетов расширений. Дополнительные сведения см. в пакетах расширений функций Azure.
Типы привязки
Типы привязки, поддерживаемые для .NET, зависят от версии расширения и режима выполнения C#, что может быть одним из следующих типов:
Изолированная библиотека классов рабочих процессов, скомпилированная функция C# выполняется в процессе, изолированном от среды выполнения.
Библиотека внутрипроцессных классов — это скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций.
Выберите версию, чтобы просмотреть сведения о типе привязки для режима и версии.
Расширение служебная шина поддерживает типы параметров в соответствии с таблицей ниже.
1 Сообщения, содержащие данные JSON, можно десериализировать в известные типы объектов CLR (POCO).
2 Расширенные сценарии включают расчет сообщений, сеансы и транзакции. Эти типы доступны в качестве отдельных параметров в дополнение к обычному параметру триггера.
Более ранние версии расширения предоставляют типы из нерекомендуемого пространства имен Microsoft.Azure.ServiceBus . Новые типы из Azure.Messaging.ServiceBus являются эксклюзивными для расширения 5.x+.
30 сентября 2026 г. мы удалим библиотеки пакета SDK Служебная шина Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus и com.microsoft.azure.servicebus, которые не соответствуют рекомендациям по пакету SDK Azure. Мы также завершим поддержку протокола SBMP, поэтому вы больше не сможете использовать этот протокол после 30 сентября 2026 года. Перейдите в последние библиотеки пакета SDK Azure, которые предлагают критически важные обновления системы безопасности и улучшенные возможности до этой даты.
Хотя старые библиотеки по-прежнему могут использоваться после 30 сентября 2026 года, они больше не будут получать официальную поддержку и обновления от Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.
Эта версия расширения поддерживает типы параметров в соответствии с таблицей ниже.
Расширение служебная шина поддерживает типы параметров в соответствии с таблицей ниже.
Сценарий привязки |
Типы параметров |
триггер служебная шина (одно сообщение) |
[Microsoft.Azure.ServiceBus.Message]
string
byte[] Сериализуемые типыJSON 1 |
триггер служебная шина (пакет сообщений) |
ServiceBusReceivedMessage[]
string[] |
служебная шина триггер расширенныхсценариев 2 |
IMessageReceiver
MessageReceiver
IMessageSession
|
служебная шина выходные данные (одно сообщение) |
Сообщение
string
byte[] Сериализуемые типыJSON 1 |
служебная шина выходных данных (несколько сообщений) |
ICollector<T> или IAsyncCollector<T> где T находится один из отдельных типов сообщений
MessageSender |
1 Сообщения, содержащие данные JSON, можно десериализировать в известные типы объектов CLR (POCO).
2 Расширенные сценарии включают расчет сообщений, сеансы и транзакции. Эти типы доступны в качестве отдельных параметров в дополнение к обычному параметру триггера.
Функции 1.x предоставляют типы из устаревшего пространства имен Microsoft.ServiceBus.Messaging . Новые типы из Azure.Messaging.ServiceBus являются эксклюзивными для расширения 5.x+. Чтобы использовать их, необходимо обновить приложение до Функций 4.x.
30 сентября 2026 г. мы удалим библиотеки пакета SDK Служебная шина Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus и com.microsoft.azure.servicebus, которые не соответствуют рекомендациям по пакету SDK Azure. Мы также завершим поддержку протокола SBMP, поэтому вы больше не сможете использовать этот протокол после 30 сентября 2026 года. Перейдите в последние библиотеки пакета SDK Azure, которые предлагают критически важные обновления системы безопасности и улучшенные возможности до этой даты.
Хотя старые библиотеки по-прежнему могут использоваться после 30 сентября 2026 года, они больше не будут получать официальную поддержку и обновления от Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.
Изолированный рабочий процесс поддерживает типы параметров в соответствии с таблицами ниже.
Триггер служебной шины
Если требуется, чтобы функция обрабатывала одно сообщение, триггер служебная шина может привязаться к следующим типам:
Тип |
Описание |
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".
Более ранние версии расширений в изолированном рабочем процессе поддерживают привязку только к string
byte[]
сериализуемым типам JSON. Дополнительные параметры доступны для расширения 5.x+.
Параметры файла 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
применяются только к взаимодействию со службой служебная шина. Они не влияют на повторные попытки выполнения функций. Дополнительные сведения см. в разделе "Повторные попытки".
Свойство |
По умолчанию |
Описание |
режим |
Exponential |
Режим, используемый для расчета интервалов повтора. В стандартном экспоненциальном режиме попытки будут повторяться с интервалом, основанном на стратегии отсрочки, в соответствии с которой время перед каждой следующей попыткой увеличивается. В режиме Fixed попытки будут повторяться через постоянные интервалы. |
tryTimeout |
00:01:00 |
Максимальное время ожидания операции за попытку. |
задержка |
00:00:00.80 |
Коэффициент задержки или отсрочки, применяемый между повторными попытками. |
maxDelay |
00:01:00 |
Максимальная задержка между повторными попытками |
maxRetries |
3 |
Максимальное количество повторных попыток, после которого связанная операция будет считаться неудавшейся. |
prefetchCount |
0 |
Возвращает или задает число сообщений, которое получатель сообщений может запросить одновременно. |
тип транспорта |
amqpTcp |
Протокол и транспорт, которые используются для обмена данными со служебной шиной Azure. Доступные параметры: amqpTcp , amqpWebSockets |
webProxy |
Н/Д |
Прокси-сервер, используемый для обмена данными со служебной шиной Azure через веб-сокеты. Прокси-сервер нельзя использовать с транспортом amqpTcp . |
autoCompleteMessages |
true |
Определяет, следует ли автоматически завершать сообщения после успешного выполнения функции. |
maxAutoLockRenewalDuration |
00:05:00 |
Максимальный период времени, в течение которого блокировка сообщения будет продлеваться автоматически. Этот параметр применяется только для функций, получающих одно сообщение за раз. |
maxConcurrentCalls |
16 |
По умолчанию в среде выполнения службы "Функции" одновременно обрабатывается несколько сообщений очереди. Этот параметр ограничивает максимальное количество одновременных вызовов обратного вызова, которое можно инициировать для каждого масштабируемого экземпляра. Если план размещения имеет более одного ядра на экземпляр, максимальное количество вызовов умножается на число ядер. Например, в плане, работающем на оборудовании с двумя ядрами, параметр 16 по умолчанию означает, что максимальное количество одновременных вызовов на экземпляр действительно 32 (или 2 * 16 ). Этот параметр используется только в том случае, если isSessionsEnabled для триггера. Этот параметр применяется только для функций, получающих одно сообщение одновременно, а не в пакете. |
maxConcurrentSessions |
8 |
Максимальное количество сеансов, которые могут обрабатываться одновременно на масштабируемый экземпляр. Этот параметр используется только в том случае, если isSessionsEnabled для триггера. Этот параметр применяется только для функций, получающих одно сообщение за раз. |
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.0Microsoft.Azure.WebJobs.Extensions.ServiceBus
пакета или более поздней версии.
{
"version": "2.0",
"extensions": {
"serviceBus": {
"prefetchCount": 100,
"messageHandlerOptions": {
"autoComplete": true,
"maxConcurrentCalls": 32,
"maxAutoRenewDuration": "00:05:00"
},
"sessionHandlerOptions": {
"autoComplete": false,
"messageWaitTimeout": "00:00:30",
"maxAutoRenewDuration": "00:55:00",
"maxConcurrentSessions": 16
},
"batchOptions": {
"maxMessageCount": 1000,
"operationTimeout": "00:01:00",
"autoComplete": true
}
}
}
}
При установке для свойства isSessionsEnabled
или атрибута триггера значения true
, выбирается sessionHandlerOptions
. При установке для свойства isSessionsEnabled
или атрибута триггера значения false
, выбирается messageHandlerOptions
.
Свойство |
По умолчанию |
Описание |
prefetchCount |
0 |
Возвращает или задает число сообщений, которое получатель сообщений может запросить одновременно. |
maxAutoRenewDuration |
00:05:00 |
Максимальный период времени, в течение которого блокировка сообщения будет продлеваться автоматически. |
автозавершение |
true |
Должен ли триггер автоматически вызывать завершение после обработки, или код функции будет вызывать завершение вручную.
Значение false поддерживается только в C#.
Если установлено значение true , триггер автоматически завершает сообщение, сеанс или пакет, если выполнение функции завершается успешно, в противном случае обработка сообщения прерывается.
Если задано значение false , вы несете ответственность за вызов методов ServiceBusReceiver для завершения, отмены или взаимозапуска сообщения, сеанса или пакета. Если генерируется исключение (и ни один из методов ServiceBusReceiver не вызывается), то блокировка остается. По истечении срока блокировки сообщение снова помещается в очередь с увеличением счетчика DeliveryCount и блокировка автоматически продляется.
В функциях, отличных от C#, исключения в функции приводят к тому, что среда выполнения вызывает abandonAsync в фоновом режиме. Если исключение не возникает, completeAsync вызывается в фоновом режиме. |
maxConcurrentCalls |
16 |
Максимальное количество одновременных вызовов к обратному вызову, которое должен инициировать процесс обработки сообщений на масштабируемый экземпляр. По умолчанию в среде выполнения службы "Функции" одновременно обрабатывается несколько сообщений очереди. |
maxConcurrentSessions |
2000 |
Максимальное количество сеансов, которые могут обрабатываться одновременно на масштабируемый экземпляр. |
maxMessageCount |
1000 |
Максимальное число сообщений, отправленных в функцию при активации. |
operationTimeout |
00:01:00 |
Значение интервала времени, выраженное в hh:mm:ss . |
Следующие шаги