Как направить сообщения концентратора событий различным функциям Azure в зависимости от их типа сообщения - PullRequest
1 голос
/ 29 июня 2019

У меня есть Azure Event Hub , через который я хотел бы отправлять различные типы сообщений.Каждое сообщение должно обрабатываться отдельной функцией Azure в зависимости от типа сообщения.Каков наилучший способ сделать это?

На самом деле, я мог бы создать контейнер JSON со свойством type и payload и позволить одной родительской функции Azure отправить всеполезные нагрузки сообщений - в зависимости от их типа - для других функций, но это выглядит немного странно.

Этот вопрос в основном задает то же самое - однако на него дан ответ, как это можно сделать с помощью IoTХаб и маршрутизация сообщений .В конфигурации концентратора событий я не могу найти какой-либо параметр для настройки маршрутизации сообщений.

Или я должен переключиться в очередь сообщений Azure, чтобы получить эту функцию?

Ответы [ 3 ]

1 голос
/ 29 июня 2019

Я бы использовал потоковую аналитику Azure, чтобы направить ее к различным функциям Azure. ASA позволяют указать концентраторы событий в качестве источника и несколько приемников (один из которых может быть несколькими функциями Azure). Подробнее о настройке служб Azure Streaming Analytics можно прочитать через портал Azure здесь . Вам необходимо установить концентратор событий в качестве источника ( docs ). Вам также необходимо настроить приемник ( документы ). Вы пишете некоторый MS SQL-подобный код для маршрутизации сообщений в различные приемники. Однако ASA являются дорогостоящими по сравнению с другими услугами, поскольку вы платите за фиксированное количество вычислений.

Я положил немного псевдокода ниже. Вам придется поменять его в зависимости от того, как вы настраиваете ASA, используя информацию из прилагаемой документации MS.

SELECT
    *
INTO
    [YourOutputAlias]
FROM
    [YourInputAlias]
HAVING
    [CONDITION]

SELECT
    *
INTO
    [YourAlternateOutputAlias]
FROM
    [YourInputAlias]
HAVING
    [CONDITION]
0 голосов
/ 04 июля 2019

В итоге я использовал Azure Durable Functions , используя шаблон Fan Out / Fan In.

В этом подходе все события обрабатываются одной функцией Orchestrator, которая на самом деле является Долговечная функция Azure (F1).Это десериализует входящий JSON для правильного DTO.На основе содержимого DTO вызывается соответствующая функция активности (F2), которая ее обрабатывает.

enter image description here

0 голосов
/ 30 июня 2019

На основе вашей дополнительной информации о бизнес-требованиях и предположении, что размер события <64 КБ (1 МБ в предварительном просмотре), в следующем фрагменте экрана показан пример вашего решения: </p>

enter image description here

Концепция вышеупомянутого решения основана на отправке пакета событий в конечную точку домена событий AEG.Функция триггера EventHub отвечает за сопоставление каждого типа сообщения о событии в пакете с темой домена перед его публикацией в AEG.

Обратите внимание, что при использовании концентратора IoT Azure для приема событий AEG можетбыть непосредственно интегрированным в IoT Hub, и каждое сообщение о событии может распространяться в слабо отделенном режиме Pub / Sub.Кроме того, для этого бизнес-требований можно использовать уровень шкалы B1 для IoT Hub (10 долл. США в месяц) по сравнению с Basic Event Hubs (11,16 долл. США).IoT Hub имеет встроенный механизм маршрутизации сообщений (с некоторыми ограничениями), но недавно новая функция интеграции IoT / AEG, такая как публикация сообщения телеметрии устройства, хорошо поддерживает безсерверную архитектуру.

...