EventHubsException — .NET

Исключение EventHubsException возникает, когда операция, связанная с Центрами событий, вызвала ошибку (в службе или клиенте).

Сведения об исключении

Исключение содержит указанные ниже контекстные сведения, помогающие понять контекст ошибки и ее относительную серьезность.

  • IsTransient: определяет, возможно ли восстановление после этого исключения. Если исключение считается временным, соответствующая политика повтора уже была применена и повторные попытки завершились неудачно.
  • Reason: набор известных причин сбоев, помогающих классифицировать и уточнить основную причину. Эти причины позволяют применять фильтрацию исключений и использовать другую логику, если анализ текста сообщения об исключении не дает нужных результатов. Ниже перечислено несколько основных причин.
    • Клиент закрыт: возникает, если клиент Центра событий уже закрыт или удален. Рекомендуется проверить код приложения, чтобы убедиться, что объекты из клиентской библиотеки Центра событий создаются и закрываются в предполагаемой области.
    • Время ожидания службы: указывает, что служба Центров событий не ответила на операцию в течение ожидаемого периода. Эта проблема могла быть вызвана временной неполадкой сети или проблемой службы. Служба Центров событий могла успешно выполнить или не выполнить запрос; результирующее состояние неизвестно. Рекомендуется проверить текущее состояние и при необходимости повторить попытку.
    • Превышена квота: указывает, что для одной группы потребителей слишком много активных операций чтения. Это ограничение зависит от уровня пространства имен Центров событий и в этом случае может потребоваться перейти на более высокий уровень. В качестве альтернативы можно создать дополнительные группы потребителей, чтобы число операций чтения клиента потребителя для любой группы было в пределах ограничений. Дополнительные сведения доступны в документации по квотам и ограничениям Центрам событий Azure.
    • Превышен размер сообщения: данные о событии превысили максимальный размер, допустимый для отдельного события или для пакета событий. Размер включает данные события, а также все связанные метаданные и системные служебные данные. Чтобы устранить эту ошибку, сократите число событий, отправляемых в одном пакете, или уменьшите размер данных, содержащихся в сообщении. Поскольку ограничения размера могут меняться, конкретные значения см. в квотах и ограничениях для Центров событий Azure.
    • Потребитель отключен: клиент потребителя был отключен от службы Центров событий из ее экземпляра. Обычно это происходит, когда потребитель с более высоким уровнем владельца перехватывает права владения секцией и связями групп потребителей.
    • Ресурс не найден: службе Центров событий не удалось найти ресурс, например концентратор событий, группу потребителей или секцию. Возможно, он уже удален или возникла ошибка в самой службе Центров событий.

Обработка исключений

Отреагировать на ту или иную причину сбоя для исключения EventHubException можно несколькими способами. Один из вариантов — добавить фильтрацию по исключениям в блок catch.

try
{
    // Read events using the consumer client
}
catch (EventHubsException ex) when 
    (ex.Reason == EventHubsException.FailureReason.ConsumerDisconnected)
{
    // Take action based on a consumer being disconnected
}

Дальнейшие действия

Существуют и другие исключения, описанные в этой статье об устаревшей версии. Некоторые из них относятся только к устаревшей версии клиентской библиотеке .NET для Центров событий.