Является ли роль Azure Cloud Service Worker единственным вариантом хостинга Azure для запуска EventHub EventProcessor?
В настоящее время я пробираюсь через Event Hubs и EventProcessorHost. Все рекомендации, которые я нашел до сих пор, предполагают запуск EventProcessor в рабочей роли облачной службы Azure. Поскольку их развертывание и обновление очень медленные, мне было интересно, есть ли какая-либо служба Azure, которая позволяет мне запускать EventProcessor в более гибкой среде?
Пока что моя грубая архитектура выглядит так
Устройство> Центр IoT> Задание Stream Analytics> Концентратор событий> [MyEventProcessor] > SignalR > Клиенты...
Или, может быть, есть другой способ получить из Steam Analytics для отправки сообщений SignalR?
Любые рекомендации высоко ценятся.
Спасибо филипп
2 ответа
Вы можете использовать службу веб-приложения Azure с включенным SignalR и объединить ваши конвейерные "шаги" [MyEventProcessor] и SignalR в один шаг. Я делал это несколько раз, начинал с простой демонстрации чата SignalR и добавил функциональность приемника Event Hub к обработке SignalR. Эта статья близка к тому, что я имею в виду с точки зрения подхода.
Вы также можете взглянуть на Azure WebJobs. По сути, он может работать как фоновый сервис, выполняющий вашу логику. WebJobs SDK имеет поддержку Event Hub.
Вы можете запустить EventProcessorHost в любой вещи Azure, которая будет запускать произвольный код C# и будет продолжать работать. Варианты того, где вы должны его запустить, зависят от того, сколько вы хотите потратить и что вам нужно. Таким образом, Azure Container Service может быть новой причудливой системой развертывания, но ее минимальная стоимость может не подойти вам. Я запускаю свои двоичные файлы, которые читают данные из EventHubs на обычных виртуальных машинах Azure, и наша система развертывания отвечает за их управление.
Если ваш интерфейсный процесс, использующий SignalR для общения с клиентами, имеет процесс, который остается на некоторое время, вы можете просто сделать каждого из них своим логическим потребителем (группой потребителей) и заставить их потреблять весь поток. Или даже если они не остаются рядом (т. Е. Вы используете опцию хостинга Azure, которая отключает процесс во время простоя), вы можете написать свой приемник так, чтобы он запускался только в конце потока (в отличие от повторной обработки старых данных), если это то, что требует ваш сценарий.