Будут ли два потребителя Azure концентратора событий получать одинаковые уведомления? - PullRequest
0 голосов
/ 07 августа 2020

Я разрабатываю веб-приложение Azure IoT, которое использует события из Azure Event Hub. Я регулярно публикую sh веб-приложение в Azure в тестовой среде, а затем я также запускаю его в режиме отладки со своего собственного компьютера, и когда это происходит, по сути, одновременно работают два веб-приложения, которые являются потребителями. Концентратора событий.

Мне интересно, может ли один потребитель "проглотить" уведомление, чтобы другой потребитель не получил его. Это было бы плохо, и мне пришлось бы настроить отдельный концентратор событий только для моей отладочной локальной машины.

Получат ли оба потребителя концентратора событий все уведомления?

У меня нет настроить концентратор событий или потребительский код каким-либо особым образом. В потребительском коде используется Azure.Messaging.EventHubs.EventProcessorClient, а его ProcessEventAsync() выглядит так:

async Task ProcessEventHandler(ProcessEventArgs eventArgs)
{
    string deviceId = eventArgs.Data.Properties["deviceId"].ToString();
    string message = Encoding.UTF8.GetString(eventArgs.Data.Body.Span);
    await ProxyMessageToController(deviceId, message);

    
    await eventArgs.UpdateCheckpointAsync(eventArgs.CancellationToken);
}

1 Ответ

0 голосов
/ 07 августа 2020

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

Важно знать, что EventProcessorClient координируется с другими процессорами для распределения нагрузка между ними. Когда один процессор «крадет» право собственности на раздел у других процессоров, вы потенциально можете увидеть некоторое перекрытие, когда оба прочитали одни и те же события. Это перекрытие обычно представляет собой очень небольшой промежуток времени, но в некоторой степени зависит от вашей стратегии контрольных точек. Скорее всего, вы увидите смену владельца раздела при запуске нового процессора до тех пор, пока все разделы не будут распределены поровну.

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

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