EventHubsException - .NET
當事件中樞特定的作業導致發生問題時,即會觸發 EventHubsException,包括服務內的錯誤和用戶端特定錯誤。
例外狀況資訊
例外狀況包含下列內容相關資訊,可協助您理解錯誤內容及其相對嚴重性。
- IsTransient:識別是否將例外狀況視為可復原。 在視為暫時性的情況下,系統已套用適當的重試原則,並且重試失敗。
- 原因:提供一組已知的失敗原因,有助於分類和釐清根本原因。 這些原因旨在:檢查例外狀況訊息文字發現不理想時,便可套用例外狀況篩選和其他邏輯。 以下是幾項關鍵的失敗原因:
- 用戶端已關閉:發生於事件中樞用戶端已關閉或已處置時。 建議您檢查應用程式程式碼,確保事件中樞用戶端程式庫的物件會在預期範圍內建立和關閉。
- 服務逾時:表示事件中樞服務未於預期期間內回應作業。 此問題的原因可能是暫時性的網路問題或服務問題。 事件中樞服務不一定已成功完成要求;狀態未知。 建議您嘗試驗證目前狀態,並視需要重試。
- 超過配額:表示單一取用者群組使用中的讀取作業過多。 此限制取決於事件中樞命名空間層,且可能必須移至較高層。 替代作法是建立額外的取用者群組,並確定所有群組的取用者用戶端讀取數目皆在限制範圍內。 如需詳細資訊,請參閱 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 用戶端程式庫。