Это не тот сценарий, для которого предназначен концентратор событий.Он предназначен для обработки входящих данных в масштабе, и типичный вариант использования - это обработка этих данных как можно быстрее.
В вашем случае вы хотите обрабатывать в основном одни и те же данные снова и снова с часовыми интервалами,EventProcessrHost
предназначен для непрерывной работы в фоновом режиме.
Возможно, будет намного проще хранить входящие данные в хранилище BLOB-объектов в формате, который включает компонент часа, такой как контейнер \ дата \ время \ blob1..json (\ container \ 2019-12-22 \ 07 \ blob1.json) и, например, иметь расписание, запускающее функцию Azure , которая знает, что для больших двоичных объектов обрабатывать на основевремя его запуска.
Мое понимание этого процесса получения событий состоит в том, что каждый раз, когда в Event Hub поступает новое событие, будет устанавливаться сигнал и класс EventProcessorHost будет запускаться дляполучить данные о событии(Я сомневаюсь в правильности моего понимания.) Однако в этом методе данные о событии могут быть доступны только один раз.К нему нельзя получить доступ в следующих операциях получения, потому что он вызывает ошибку в Event Hub.
Это правильно, EventProcessorHost будет запускаться при новых событиях.События обрабатываются один раз с использованием концепции контрольных точек.Вы можете поиграть со смещениями для перемотки потока, но я думаю, что моя альтернатива намного проще.
Еще одна технология, которая может быть вам полезна и хорошо работает с концентратором событий, - Azure Stream Analytics , этопозволяет вам определять окна, основанные на времени, но для этого может потребоваться немного больше времени, но я не уверен в этом.