Как получить последние данные из концентратора событий Azure?.СЕТЬ - PullRequest
0 голосов
/ 28 апреля 2019

У меня проблема с тем, как получить последние данные из Event Hub с помощью приложения .NET. Мы требуем непрерывного чтения / получения последних 1-дневных данных в Event Hub каждый час. Например, в 6 часов я хочу получить данные с 6 часов вчера до 6 часов. сегодня. Затем в 7 часов я хочу получить данные с 7 часов вчера до 7 часов сегодня.

Я пытался получать события из концентраторов событий Azure, следуя инструкции . Но это не удовлетворяет мое требование. Мое понимание этого процесса получения событий состоит в том, что каждый раз, когда в Event Hub поступает новое событие, будет устанавливаться сигнал и EventProcessorHost class будет запускаться для получения данных события. ( Я сомневаюсь в правильности моего понимания. ) Однако в этом методе доступ к данным события можно получить только один раз. К нему нельзя получить доступ в следующих операциях приема, потому что он не работает в Event Hub.

Есть ли способ достижения вышеуказанного спроса?

Между тем, я также хочу знать, как использовать « смещение » в процессе получения событий. Я знаю его концепцию, но лучше есть демонстрация того, как его использовать.

Я буду признателен, если у вас есть какие-либо советы. :)

1 Ответ

0 голосов
/ 28 апреля 2019

Это не тот сценарий, для которого предназначен концентратор событий.Он предназначен для обработки входящих данных в масштабе, и типичный вариант использования - это обработка этих данных как можно быстрее.

В вашем случае вы хотите обрабатывать в основном одни и те же данные снова и снова с часовыми интервалами,EventProcessrHost предназначен для непрерывной работы в фоновом режиме.

Возможно, будет намного проще хранить входящие данные в хранилище BLOB-объектов в формате, который включает компонент часа, такой как контейнер \ дата \ время \ blob1..json (\ container \ 2019-12-22 \ 07 \ blob1.json) и, например, иметь расписание, запускающее функцию Azure , которая знает, что для больших двоичных объектов обрабатывать на основевремя его запуска.

Мое понимание этого процесса получения событий состоит в том, что каждый раз, когда в Event Hub поступает новое событие, будет устанавливаться сигнал и класс EventProcessorHost будет запускаться дляполучить данные о событии(Я сомневаюсь в правильности моего понимания.) Однако в этом методе данные о событии могут быть доступны только один раз.К нему нельзя получить доступ в следующих операциях получения, потому что он вызывает ошибку в Event Hub.

Это правильно, EventProcessorHost будет запускаться при новых событиях.События обрабатываются один раз с использованием концепции контрольных точек.Вы можете поиграть со смещениями для перемотки потока, но я думаю, что моя альтернатива намного проще.

Еще одна технология, которая может быть вам полезна и хорошо работает с концентратором событий, - Azure Stream Analytics , этопозволяет вам определять окна, основанные на времени, но для этого может потребоваться немного больше времени, но я не уверен в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...