Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом наборе статей объясняется, как работать с привязками Функции Azure для Центр Интернета вещей. Поддержка Центр Интернета вещей основана на< привязке
Внимание
В следующих примерах кода используется API концентратора событий, этот синтаксис применим для функций Центр Интернета вещей.
| Действие | Тип |
|---|---|
| Реагирование на события, отправляемые в поток событий Центра Интернета вещей. | Trigger |
Установка расширения
Устанавливаемый пакет расширения NuGet зависит от режима C#, который используется в приложении-функции:
Функции выполняются в изолированном рабочем процессе C#. Дополнительные сведения см. в статье Guide для запуска Функции Azure C# в изолированном рабочем процессе.
Функциональные возможности расширения отличаются в зависимости от версии расширения:
В этой версии появляется возможность подключения с использованием удостоверения, а не секрета. Руководство по настройке приложений-функций с помощью управляемых удостоверений см. в руководстве по созданию приложения-функции с подключениями на основе удостоверений.
Эта версия поддерживает настройку триггеров и привязок с помощью интеграции .NET Aspire.
Добавьте расширение в проект, установив пакет NuGet версии 6.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. Эта нотация эффективно поддерживает ваше приложение в последней доступной дополнительной версии пакета расширений версии 4.x.
По возможности следует использовать последнюю версию пакета расширений и разрешить среде выполнения автоматически поддерживать последнюю дополнительную версию. Содержимое последнего пакета можно просмотреть на странице выпуска пакетов extension. Дополнительные сведения см. в пакетах расширений Функции Azure.
Типы привязки
Типы привязки, поддерживаемые для .NET, зависят от версии расширения и режима выполнения C#, что может быть одним из следующих вариантов:
Изолированная библиотека классов рабочих процессов, скомпилированная функция C# выполняется в процессе, изолированном от среды выполнения.
Выберите версию, чтобы просмотреть сведения о типе привязки для режима и версии.
Изолированный рабочий процесс поддерживает типы параметров в соответствии с таблицами ниже. Поддержка привязки к типам из [Azure". Messaging.EventHubs] находится в предварительной версии.
Триггер Центров событий
Если требуется, чтобы функция обрабатывала одно событие, триггер Центров событий может привязаться к следующим типам:
| Тип | Описание |
|---|---|
string |
Событие в виде строки. Используется, когда событие является простым текстом. |
byte[] |
Байты события. |
| Сериализуемые в JSON типы | Если событие содержит данные JSON, функции пытаются десериализировать данные JSON в обычный тип объекта CLR (POCO). |
| Azure. Messaging.EventHubs.EventData1 | Объект события. Если вы переносите все старые версии пакетов SDK центров событий, обратите внимание, что эта версия удаляет поддержку устаревшего Bodyтипа в пользу EventBody. |
Если требуется, чтобы функция обрабатывала пакет событий, триггер Центров событий может привязаться к следующим типам:
| Тип | Описание |
|---|---|
string[] |
Массив событий из пакета в виде строк. Каждая запись представляет одно событие. |
EventData[]
1 |
Массив событий из пакета в виде экземпляров Azure. Messaging.EventHubs.EventData. Каждая запись представляет одно событие. |
T[] где T является сериализуемый типJSON 1 |
Массив событий из пакета в качестве экземпляров пользовательского типа POCO. Каждая запись представляет одно событие. |
1 Чтобы использовать эти типы, необходимо ссылаться на Microsoft. Azure. Functions.Worker.Extensions.EventHubs 5.5.0 или более поздней версии и зависимости common для привязок типов ПАКЕТА SDK.
Выходная привязка Центров событий
Если требуется, чтобы функция записывала одно событие, выходная привязка Центров событий может привязаться к следующим типам:
| Тип | Описание |
|---|---|
string |
Событие в виде строки. Используется, когда событие является простым текстом. |
byte[] |
Байты события. |
| Сериализуемые в JSON типы | Объект, представляющий событие. Функции пытаются сериализовать обычный тип объекта CLR (POCO) в данные JSON. |
Если требуется, чтобы функция записывала несколько событий, выходная привязка Центров событий может привязаться к следующим типам:
| Тип | Описание |
|---|---|
T[] где T является одним из отдельных типов событий |
Массив, содержащий несколько событий. Каждая запись представляет одно событие. |
Для других сценариев вывода создайте и используйте EventHubProducerClient с другими типами из Azure. Messaging.EventHubs напрямую. Пример использования внедрения зависимостей для создания типа клиента из Azure SDK см. в разделе Azure клиентов.
Для Go, обработчики триггеров Event Hubs получают bindings.EventHubMessage. Регистрирующие хабы событий триггерируются в коде с помощью app.EventHub(). Выводные привязки Event Hubs в настоящее время не поддерживаются работником Go; Используйте Azure SDK для Go напрямую, когда нужно отправлять события.
Типы привязки ПАКЕТА SDK
Типы пакетов SDK для Azure EventHub доступны в предварительной версии. Следуйте указаниям Python привязки пакета SDK для примера EventHub, чтобы приступить к работе с типами пакетов SDK для Центров событий в Python.
Внимание
Для привязок типов пакета SDK требуется модель программирования Python версии 2.
| Привязка | Типы параметров | Образцы |
|---|---|---|
| Триггер EventHub | EventData | EventData |
Параметры файла host.json
В файле host.json содержатся параметры, управляющие работой триггера Центров событий. Конфигурация будет разной в зависимости от версии расширения.
{
"version": "2.0",
"extensions": {
"eventHubs": {
"maxEventBatchSize" : 100,
"minEventBatchSize" : 25,
"maxWaitTime" : "00:05:00",
"batchCheckpointFrequency" : 1,
"prefetchCount" : 300,
"transportType" : "amqpWebSockets",
"webProxy" : "https://proxyserver:8080",
"customEndpointAddress" : "amqps://company.gateway.local",
"targetUnprocessedEventThreshold" : 75,
"initialOffsetOptions" : {
"type" : "fromStart",
"enqueuedTimeUtc" : ""
},
"clientRetryOptions":{
"mode" : "exponential",
"tryTimeout" : "00:01:00",
"delay" : "00:00:00.80",
"maximumDelay" : "00:01:00",
"maximumRetries" : 3
}
}
}
}
| Свойство | По умолчанию | Описание |
|---|---|---|
| maxEventBatchSize2 | 100 | Максимальное количество событий, включенных в пакет для одного вызова. Должно быть не менее 1. |
| minEventBatchSize1 | 1 | Минимальное количество событий, необходимых в пакете. Минимальное значение применяется только в том случае, если функция получает несколько событий и должна быть меньше maxEventBatchSize.Минимальный размер не гарантируется строго. Частичный пакет отправляется, когда полный пакет не может быть подготовлен до maxWaitTime истечения срока действия. Частичные пакеты также, вероятно, для первого вызова функции после масштабирования. |
| maxWaitTime1 | 00:01:00 | Максимальный интервал, который триггер должен ждать заполнения пакета перед вызовом функции. Время ожидания считается только в том случае, если minEventBatchSize больше 1 и в противном случае игнорируется. Если события minEventBatchSize были доступны до истечения времени ожидания, функция вызывается с частичным пакетом. Максимально допустимое время ожидания составляет 10 минут.ПРИМЕЧАНИЕ. Этот интервал не является строгой гарантией точного времени вызова функции. Существует небольшое поле ошибки из-за точности таймера. При масштабировании первое вызов с частичным пакетом может произойти быстрее или может занять до двух раз настроенного времени ожидания. |
| batchCheckpointFrequency | 1 | Количество пакетов, обрабатываемых перед созданием контрольной точки для концентратора событий. ЗАМЕТКА: Установка этого значения выше 1 для хостинговых планов, поддерживаемых целевым масштабированием , может привести к неправильному масштабированию. Платформа рассчитывает размер необработанной очереди как «текущая позиция — контрольная точка», что может ошибочно показывать необработанные сообщения, если пакеты обработаны, но ещё не поставлены контрольные точки, препятствуя правильному масштабированию, если сообщений не осталось. |
| количество предварительных выборок | 300 | Количество событий, запрашиваемых центрами событий и удерживаемых в локальном кэше, чтобы позволить чтениям избежать ожидания в сетевой операции. |
| transportType | amqpTcp | Протокол и транспорт, используемые для обмена данными с Центрами событий. Доступные параметры: amqpTcp, amqpWebSockets |
| webProxy | ноль | Прокси-сервер, используемый для взаимодействия с Центрами событий через веб-сокеты. Прокси-сервер нельзя использовать с транспортом amqpTcp. |
| customEndpointAddress | ноль | Адрес, используемый при установке подключения к Центрам событий, позволяющий маршрутизировать сетевые запросы через шлюз приложений или другой путь, необходимый для среды узла. Полное пространство имен для концентратора событий по-прежнему необходимо при использовании пользовательского адреса конечной точки, и оно должно быть явно указано или через строка подключения. |
| targetUnprocessedEventThreshold1 | ноль | Требуемое количество необработанных событий для каждого экземпляра функции. Пороговое значение используется в масштабировании на основе целевого объекта для переопределения порогового значения масштабирования по умолчанию, выводимого maxEventBatchSize из параметра. При установке общее количество необработанных событий делится на это значение, чтобы определить количество необходимых экземпляров функций. Число экземпляров округляется до числа, которое создает сбалансированное распределение секций. |
| initialOffsetOptions/type | fromStart | Расположение в потоке событий, с которого следует начать обработку, если контрольная точка не существует в хранилище. Применяется ко всем разделам. Дополнительные сведения см. в документации OffsetType. Доступные параметры: fromStart, fromEnd, fromEnqueuedTime |
| initialOffsetOptions/enqueuedTimeUtc | ноль | Указывает время в очереди для события в потоке, с которого начинается обработка. Если для initialOffsetOptions/type настроено значение fromEnqueuedTime, этот параметр является обязательным. Поддерживает время в любом формате, поддерживаемом в методе DateTime.Parse(), например 2020-10-26T20:31Z. Для ясности следует также указать часовой пояс. Если часовой пояс не указан, Функции предполагают локальный часовой пояс компьютера, на котором запущено приложение-функция, которое находится в формате UTC при выполнении в Azure. |
| clientRetryOptions/mode | экспоненциальный | Режим, используемый для расчета интервалов повтора. Экспоненциальный режим пытается повторить попытки с задержкой на основе стратегии отката, в которой каждая попытка увеличит длительность ожидания перед повторным повтором. Фиксированный режим повторяет попытки с фиксированными интервалами с каждой задержкой с согласованной длительностью. Доступные параметры: exponential, fixed |
| clientRetryOptions/tryTimeout | 00:01:00 | Максимальное время ожидания выполнения операции центров событий для каждой попытки. |
| clientRetryOptions/delay | 00:00:00.80 | Коэффициент задержки или отсрочки, применяемый между повторными попытками. |
| clientRetryOptions/maximumDelay | 00:00:01 | Максимальная задержка между повторными попытками. |
| clientRetryOptions/maximumRetries | 3 | Максимальное количество повторных попыток, после которого связанная операция будет считаться неудавшейся. |
1 Использование minEventBatchSize и maxWaitTime требует v5.3.0 пакета Microsoft.Azure.WebJobs.Extensions.EventHubs или более поздней версии.
2 Значение по умолчанию maxEventBatchSize изменено в v6.0.0 пакета Microsoft.Azure.WebJobs.Extensions.EventHubs. В более ранних версиях это было 10.
Они clientRetryOptions используются для повторных операций между узлом функций и Центрами событий (например, получение событий и отправки событий). Дополнительные сведения о применении политик повторных попыток к отдельным функциям см. в руководстве по обработке ошибок Функции Azure.
Справочник по host.json в Функции Azure 2.x и более подробных сведениях см. в справочнике host.json для Функции Azure.