Поскольку вы знаете, что указание Event Hub Check является чисто клиентской стороной, то есть вы можете сохранить текущее смещение в учетной записи хранения, связанной с вашим концентратором событий, используя метод
await context.CheckpointAsync();
в коде вашего клиента.Это будет преобразовано в вызов учетной записи хранения.Это не связано с каким-либо вызовом службы EventHub.
При возникновении сбоя в вашем концентраторе событий вы можете прочитать последнее (обновленное) смещение из учетной записи хранения, чтобы избежать дублирования событий. Это должно обрабатыватьсяВы на стороне клиента, и он не будет обрабатываться самим концентратором событий.
Если считыватель отключается от раздела, при повторном подключении он начинает чтение с ранее отправленной контрольной точкипоследним читателем этого раздела в этой группе потребителей.Когда устройство чтения подключается, оно передает смещение в концентратор событий, чтобы указать место, с которого следует начать чтение.Таким образом, вы можете использовать контрольные точки, чтобы пометить события как «завершенные» в последующих приложениях и обеспечить отказоустойчивость, если происходит аварийное переключение между считывателями, работающими на разных машинах.Можно вернуться к более старым данным, указав нижнее смещение от этого процесса контрольной точки.Благодаря этому механизму контрольная точка обеспечивает как отказоустойчивость, так и воспроизведение потока событий.
Более того, сбой в концентраторе событий встречается редко, а повторяющиеся события встречаются реже.Для получения дополнительной информации о создании рабочего потока без повторяющихся событий см. Переполнение стека ответ
Подробная информация о контрольной точке будет сохранена в учетной записи хранения, связанной с концентратором событий, в формате, представленном ниже.,Это можно прочитать с помощью WindowsAzure.Storage клиента, чтобы выполнить пользовательскую проверку порядкового номера последнего полученного события.