Гарантирует ли Azure Event Hub хотя бы раз доставку?

Я создаю веб-приложение Azure и хочу отправить журналы активности в Azure Event Hub. Что произойдет, если связь между хостом приложения и концентратором событий будет потеряна? Реализует ли клиент Event Hub локальную очередь?

1 ответ

Решение

ТЛДР: Да. EventHubs Предлагает как минимум однократную доставку. Клиентская SDK EventHub не поддерживает очереди. Он выдаст, и зависимое приложение должно будет повторить попытку отправки.

Сервис EventHubs гарантирует доставку как минимум один раз. Вызов отправки будет успешным только тогда, когда клиент получит "подтверждение" от службы EventHubs. Служба EventHubs не будет ожидать "подтверждения" клиента для "подтверждения", которое оно отправило. Проще говоря, оно не предлагает "Только один раз" Точно однажды семантика.

Перспектива реализации:

Если вы знакомы с Client SDK, служба EventHubs, даже не имеете возможности узнать, что сообщение отправляется / доставляется дважды - потому что в настоящее время в нем нет способа - идентифицировать сообщение (например: в EventData нет ничего похожего на MessageID). Таким образом, единственная гарантия, которую может предложить служба EventHubs, - какие бы данные ни отправлялись в службу EventHub, она будет подтверждать это только для клиента, только после сохранения сообщения в постоянном хранилище. Вот почему это называется хотя бы один раз. То же самое относится и к получению. Если клиент получателя дает сбой, после восстановления - вернитесь со смещением, которое вы помните в последний раз - служба EventHubs будет гарантировать, что он будет воспроизводить поток именно с этой точки.

Вызов компромисса: предложить любую другую семантику, такую ​​как "по крайней мере один раз" или "точно один раз" - инфраструктура уровня сообщений (идентификатор для сообщения и вычисление для сообщения для устранения дублирования событий) - будут необходимы. Итак, это приятно иметь функцию на уровне обслуживания - будет сопровождаться дополнительными потерями производительности.

Поскольку задача Event Hubs состоит в том, чтобы предлагать семантику Stream, и они действительно соответствуют семантике для каждого сообщения - служба Event Hubs решила перенести это в клиентские библиотеки. Клиентские библиотеки должны будут построить его, принимая во внимание семантику "Точно один раз", которую мы предлагаем.

НТН! Sree

Они были задокументированы на официальной странице Microsoft. Вы можете найти официальную информацию здесь: https://docs.microsoft.com/en-us/azure/event-grid/compare-messaging-services

Другие вопросы по тегам