Сбой при отправке пакетных событий в azure eventhub

Я пытаюсь отправить пакетные события с помощью вызова Microsoft.Azure.EventHubs "SendAsync(IEnumerable)".

Является ли это транзакционной операцией, т.е. возможен ли частичный успех/неудача? Есть ли какая-либо официальная документация, подтверждающая, что не будет дубликатов, если я отправлю повторно, если этот API выдаст исключение?


person Vishal Vaibhav    schedule 27.03.2018    source источник


Ответы (1)


  • Все вызовы sendAsync либо завершаются успешно, либо завершаются сбоем вместе --частичный успех невозможен.
  • Если вызов sendAsync не генерирует исключение, служба берет на себя ответственность за доставку событий. Если он бросает, то события не отправляются. Если время запроса истекает до получения ответа от службы, то неясно, была ли отправка успешной или нет.
  • Каждый раз, когда вы отправляете события, ни служба EventHubProducerClient, ни служба концентраторов событий не имеют представления об идентификации события — это новый фрагмент данных.

(Ваши документы относятся к версии 4 библиотеки, в которой нет EventHubProducerClient. Это из версия 5.2.0, если вам интересно.)

Если вы беспокоитесь о дублировании событий, вам нужно определить, каковы потребности вашего приложения — что лучше: потерять данные или иметь дело с ними при обработке? (Вы можете добавить к событиям пользовательские метаданные, чтобы решить, как их обрабатывать — sample.) Центры событий имеют гарантия хотя бы один раз, поэтому даже если вы не публикуете дубликаты, есть вероятность, что служба вернет некоторые события несколько раз. Это обычное дело для службы обмена сообщениями.

Если у вас есть дополнительные вопросы по этому поводу, я бы рекомендовал зарегистрировать проблему в этом GitHub. repo, где живет новая библиотека.

person lily_m    schedule 12.11.2020