Event Hubs-Messagingausnahmen: .NET (Legacy)
In diesem Abschnitt werden die von .NET Framework-APIs generierten .NET-Ausnahmen aufgelistet.
Wichtig
Einige der im Artikel aufgeführten Ausnahmen gelten nur für die .NET-Legacybibliothek von Event Hubs. Beispiel: Ausnahmen vom Typ „Microsoft.ServiceBus.*“
Informationen zur Ausnahme „EventHubsException“, die von der neuen .NET-Bibliothek ausgelöst wird, finden Sie unter EventHubsException: .NET
Am 30. September 2026 werden die Azure Service Bus SDK-Bibliotheken „WindowsAzure.ServiceBus“, „Microsoft.Azure.ServiceBus“ und „com.microsoft.azure.servicebus“ eingestellt, da sie nicht den Azure SDK-Richtlinien entsprechen. Außerdem wird die Unterstützung des SBMP-Protokolls beendet, sodass Sie dieses Protokoll nach dem 30. September 2026 nicht mehr verwenden können. Migrieren Sie vor diesem Datum zu den neuesten Azure SDK-Bibliotheken, die wichtige Sicherheitsupdates und verbesserte Funktionen bieten.
Obwohl die älteren Bibliotheken noch über den 30. September 2026 hinaus verwendet werden können, erhalten sie keinen offiziellen Support und keine Updates mehr von Microsoft. Weitere Informationen finden Sie in der Ankündigung der Supporteinstellung.
Ausnahmekategorien
Die von den .NET-APIs von Event Hubs generierten Ausnahmen können – zusammen mit den zugehörigen Korrekturmaßnahmen – zu den folgenden Kategorien gehören:
Codierfehler des Benutzers:
- System.ArgumentException
- System.InvalidOperationException
- System.OperationCanceledException
- System.Runtime.Serialization.SerializationException
Allgemeine Maßnahme: Korrigieren Sie den Code, bevor Sie fortfahren.
Fehler bei der Einrichtung oder Konfiguration:
- Microsoft.ServiceBus.Messaging.MessagingEntityNotFoundException
- Microsoft.Azure.EventHubs.MessagingEntityNotFoundException
- System.UnauthorizedAccessException
Allgemeine Maßnahme: Überprüfen Sie die Konfiguration, und ändern Sie diese gegebenenfalls.
Vorübergehende Ausnahmen:
- Microsoft.ServiceBus.Messaging.MessagingException
- Microsoft.ServiceBus.Messaging.ServerBusyException
- Microsoft.Azure.EventHubs.ServerBusyException
- Microsoft.ServiceBus.Messaging.MessagingCommunicationException
Allgemeine Maßnahme: Wiederholen Sie den Vorgang, oder benachrichtigen Sie die Benutzer.
Andere Ausnahmen:
- System.Transactions.TransactionException
- System.TimeoutException
- Microsoft.ServiceBus.Messaging.MessageLockLostException
- Microsoft.ServiceBus.Messaging.SessionLockLostException
Allgemeine Maßnahme: Spezifisch für den Typ der Ausnahme. Weitere Informationen finden Sie in der Tabelle im folgenden Abschnitt.
Ausnahmetypen
In der folgenden Tabelle werden die Typen von Messagingausnahmen, ihre Ursachen und Vorschläge für Korrekturmaßnahmen aufgelistet.
Ausnahmetyp | Beschreibung/Ursache/Beispiele | Vorgeschlagene Maßnahme | Hinweis zur automatischen/sofortigen Wiederholung |
---|---|---|---|
TimeoutException | Der Server hat nicht innerhalb der von OperationTimeout vorgegebenen Zeit auf den angeforderten Vorgang reagiert. Unter Umständen hat der Server den angeforderten Vorgang abgeschlossen. Diese Ausnahme kann aufgrund von Verzögerungen im Netzwerk oder in der Infrastruktur auftreten. | Überprüfen Sie den Systemzustand auf Konsistenz, und wiederholen Sie den Vorgang bei Bedarf. Siehe TimeoutException. |
In einigen Fällen kann eine Wiederholung helfen. Fügen Sie dem Code eine Wiederholungslogik hinzu. |
InvalidOperationException | Der angeforderte Benutzervorgang ist auf dem Server oder innerhalb des Diensts unzulässig. Sehen Sie sich die Details in der Ausnahmemeldung an. Beispielsweise generiert Complete diese Ausnahme, wenn die Meldung im ReceiveAndDelete -Modus empfangen wurde. | Überprüfen Sie den Code und die Dokumentation. Stellen Sie sicher, dass der angeforderte Vorgang gültig ist. | Ein Wiederholungsversuch löst das Problem nicht. |
OperationCanceledException | Es wurde versucht, einen Vorgang für ein Objekt aufzurufen, das bereits geschlossen, abgebrochen oder verworfen wurde. In seltenen Fällen wurde die Ambient-Transaktion bereits verworfen. | Überprüfen Sie den Code, und stellen Sie sicher, dass keine Vorgänge für verworfene Objekte aufgerufen werden. | Ein Wiederholungsversuch löst das Problem nicht. |
UnauthorizedAccessException | Das TokenProvider-Objekt konnte kein Token abrufen, das Token ist ungültig, oder das Token enthält nicht die Ansprüche, die zum Ausführen des Vorgangs erforderlich sind. | Stellen Sie sicher, dass der Tokenanbieter mit den richtigen Werten erstellt wird. Überprüfen Sie die Konfiguration für den Access Control Service. | In einigen Fällen kann eine Wiederholung helfen. Fügen Sie dem Code eine Wiederholungslogik hinzu. |
ArgumentException ArgumentNullException ArgumentOutOfRangeException |
Mindestens eines der für die Methode bereitgestellten Argumente ist ungültig. Der für NamespaceManager oder Create bereitgestellte URI enthält Pfadsegmente. Das für NamespaceManager oder für Create bereitgestellte URI-Schema ist ungültig. Der Eigenschaftswert ist größer als 32 KB. | Überprüfen Sie den aufrufenden Code, und stellen Sie sicher, dass die Argumente richtig sind. | Eine Wiederholung hilft nicht. |
Microsoft.ServiceBus.Messaging MessagingEntityNotFoundException Microsoft.Azure.EventHubs MessagingEntityNotFoundException |
Die dem Vorgang zugeordnete Entität ist nicht vorhanden oder wurde gelöscht. | Stellen Sie sicher, dass die Entität vorhanden ist. | Eine Wiederholung hilft nicht. |
MessagingCommunicationException | Der Client kann keine Verbindung mit Event Hubs herstellen. | Stellen Sie sicher, dass der angegebene Hostname richtig und der Host erreichbar ist. | Eine Wiederholung kann helfen, wenn zeitweilige Verbindungsprobleme vorliegen. |
Microsoft.ServiceBus.Messaging ServerBusyException Microsoft.Azure.EventHubs ServerBusyException |
Der Dienst kann die Anforderung derzeit nicht verarbeiten. | Der Client kann eine gewisse Zeit warten und dann den Vorgang wiederholen. Siehe ServerBusyException. |
Der Client kann den Vorgang nach einer gewissen Zeitspanne wiederholen. Wenn die Wiederholung zu einer anderen Ausnahme führt, überprüfen Sie das Wiederholungsverhalten dieser Ausnahme. |
MessagingException | Eine allgemeine Messagingausnahme, die in folgenden Fällen ausgelöst werden kann: Es wird versucht, ein QueueClient-Element mit einem Namen oder einem Pfad zu erstellen, der zu einem anderen Entitätstyp gehört (z.B. zu einem Thema). Es wird versucht, eine Nachricht zu senden, die größer als 1 MB ist. Der Server oder der Dienst hat beim Verarbeiten der Anforderung einen Fehler festgestellt. Sehen Sie sich die Details in der Ausnahmemeldung an. Dies ist meist eine vorübergehende Ausnahme. | Überprüfen Sie den Code, und stellen Sie sicher, dass nur serialisierbare Objekte für den Nachrichtentext verwendet werden (oder verwenden Sie ein benutzerdefiniertes Serialisierungsprogramm). Überprüfen Sie die Dokumentation für die unterstützten Werttypen der Eigenschaften, und verwenden Sie nur unterstützte Typen. Überprüfen Sie die IsTransient -Eigenschaft. Wenn sie den Wert Trueaufweist, können Sie versuchen, den Vorgang zu wiederholen. | Das Verhalten einer Wiederholung ist nicht definiert, u. U. hilft sie nicht. |
MessagingEntityAlreadyExistsException | Es wurde versucht, eine Entität mit einem Namen zu erstellen, der bereits von einer anderen Entität in diesem Dienstnamespace verwendet wird. | Löschen Sie die vorhandene Entität, oder wählen Sie einen anderen Namen für die zu erstellende Entität. | Eine Wiederholung hilft nicht. |
QuotaExceededException | Die Messagingentität hat die maximal zulässige Größe erreicht. Diese Ausnahme kann auftreten, wenn bereits die maximale Anzahl von fünf Empfängern für eine bestimmte Consumergruppe geöffnet wurde. | Schaffen Sie Platz in der Entität, indem Sie Nachrichten aus der Entität oder ihren Unterwarteschlangen empfangen. Siehe QuotaExceededException |
Eine Wiederholung kann helfen, wenn in der Zwischenzeit Nachrichten entfernt wurden. |
MessagingEntityDisabledException | Es wurde ein Laufzeitvorgang für eine deaktivierte Entität angefordert. | Aktivieren Sie die Entität. | Eine Wiederholung kann helfen, wenn die Entität in der Zwischenzeit aktiviert wurde. |
Microsoft.ServiceBus.Messaging MessageSizeExceededException Microsoft.Azure.EventHubs MessageSizeExceededException |
Eine Nachrichtennutzlast überschreitet den Grenzwert von 1 MB. Dieser Grenzwert von 1 MB gilt für die Gesamtgröße der Nachricht, zu der auch Systemeigenschaften und .NET-Mehraufwand gehören. | Reduzieren Sie die Größe der Nachrichtennutzlast, und wiederholen Sie den Vorgang. | Eine Wiederholung hilft nicht. |
QuotaExceededException
QuotaExceededException gibt an, dass das Kontingent für eine bestimmte Entität überschritten wurde.
Diese Ausnahme kann auftreten, wenn bereits die maximale Anzahl von fünf Empfängern für eine bestimmte Consumergruppe geöffnet wurde.
Event Hubs
Für Event Hubs gilt ein Grenzwert von 20 Consumergruppen pro Event Hubs-Instanz. Wenn Sie versuchen, weitere zu erstellen, erhalten Sie eine QuotaExceededException.
TimeoutException
Eine TimeoutException zeigt an, dass ein von einem Benutzer initiierter Vorgang länger als das Timeout des Vorgangs dauert.
Für Event Hubs wird das Zeitlimit entweder als Teil der Verbindungszeichenfolge oder über ServiceBusConnectionStringBuilderangegeben. Die Fehlermeldung selbst kann variieren, aber sie enthält immer den Timeoutwert für den aktuellen Vorgang.
Es wird erwartet, dass es während oder zwischen Wartungsarbeiten, z. B. bei Event Hubs-Dienstupdates (oder) Betriebssystemaktualisierungen für Ressourcen, die den Dienst ausführen, zu Timeouts kommt. Bei Betriebssystemupdates werden Entitäten verschoben, und Knoten werden aktualisiert oder neu gestartet. Dies kann zu Timeouts führen. Details zur Vereinbarung zum Service Level (SLA) für den Azure Event Hubs-Dienst finden Sie unter SLA für Event Hubs.
Häufige Ursachen
Es gibt zwei häufige Ursachen für diesen Fehler: eine falsche Konfiguration oder ein vorübergehender Dienstfehler.
- Falsche Konfiguration: Das Zeitlimit für den Vorgang ist möglicherweise zu klein für die Betriebsbedingung. Der Standardwert für das Zeitlimit für den Vorgang im Client-SDK beträgt 60 Sekunden. Überprüfen Sie, ob der Wert in Ihrem Code auf einen zu geringen Wert festgelegt wurde. Der Zustand der Netzwerk- und CPU-Auslastung kann sich auf die Zeit auswirken, die zum Abschließen eines bestimmten Vorgangs erforderlich ist. Daher sollte das Zeitlimit für den Vorgang nicht auf einen kleinen Wert festgelegt werden.
- Vorübergehender Dienstfehler: Gelegentlich kann es beim Event Hubs-Dienst zu Verzögerungen bei der Verarbeitung von Anforderungen kommen, z.B. in Zeiten mit hohem Datenverkehr. In solchen Fällen können Sie den Vorgang nach einer kurzen Verzögerung so lange wiederholen, bis der Vorgang erfolgreich ist. Wenn der gleiche Vorgang auch nach mehreren Versuchen nicht erfolgreich ist, besuchen Sie die Website mit dem Azure-Status, um zu überprüfen, ob Dienstausfälle bekannt sind.
ServerBusyException
Microsoft.ServiceBus.Messaging.ServerBusyException oder Microsoft.Azure.EventHubs.ServerBusyException gibt an, dass ein Server überlastet ist. Es gibt zwei relevante Fehlercodes für diese Ausnahme.
Fehlercode 50002
Dieser Fehler kann aus zwei Gründen auftreten:
Die Last wird nicht gleichmäßig auf alle Partitionen des Event Hubs verteilt, und eine Partition erreicht die lokale Begrenzung für Durchsatzeinheiten.
Lösung: Eine Überarbeitung der Strategie für die Partitionsverteilung oder die Verwendung von EventHubClient.Send(eventDataWithOutPartitionKey) behebt das Problem möglicherweise.
Der Event Hubs-Namespace enthält nicht genügend Durchsatzeinheiten (Sie können die Angabe im Azure-Portal im Fenster des Event Hubs-Namespace auf dem Bildschirm Metriken überprüfen). Im Portal werden aggregierte Informationen für einen Zeitraum von einer Minute angezeigt. Wir messen den Durchsatz jedoch in Echtzeit, daher handelt es sich nur um eine Schätzung.
Lösung: Die Erhöhung der Durchsatzeinheiten für den Namespace kann helfen.
Sie können Durchsatzeinheiten auf der Seite Skalierung oder Übersicht Ihres Event Hubs-Namespace im Azure-Portal konfigurieren. Sie können auch Automatische Vergrößerung verwenden,um automatisch durch Erhöhung der Anzahl von Durchsatzeinheiten zentral hochzuskalieren, um den Nutzungsanforderungen gerecht zu werden.
Durchsatzeinheiten (Throughput Units, TUs) werden auf alle Event Hubs in einem Event Hubs-Namespace angewendet. Das bedeutet, dass Sie TUs auf Namespaceebene erwerben und diese auf die Event Hubs unter dem Namespace aufgeteilt werden. Durch jede TU erhält der Namespace die Berechtigung für folgende Funktionen:
- Eingangsereignisse bis zu 1 MB pro Sekunde (Ereignisse, die an einen Event Hub gesendet werden), aber nicht mehr als 1000 Eingangsereignisse, Verwaltungsvorgänge oder Steuer-API-Aufrufe pro Sekunde
- Ausgangsereignisse (Ereignisse, die von einem Event Hub genutzt werden) mit bis zu 2 MB pro Sekunde, aber maximal 4096 Ausgangsereignissen
- Bis zu 84 GB Ereignisspeicher (ausreichend für die Standardaufbewahrungsdauer von einer Stunde)
Wechseln Sie auf der Seite Übersicht im Abschnitt Metriken anzeigen zur Registerkarte Durchsatz. Wählen Sie das Diagramm aus, um es in einem größeren Fenster mit 1-Minuten-Intervallen auf der X-Achse zu öffnen. Sehen Sie sich die Spitzenwerte an, und teilen Sie sie durch 60, um eingehende Bytes/Sekunde oder ausgehende Bytes/Sekunde zu erhalten. Verwenden Sie einen ähnlichen Ansatz, um die Anzahl von Anforderungen pro Sekunde zu Spitzenzeiten auf der Registerkarte Anforderungen zu berechnen.
Wenn Sie Werte sehen, die höher sind als die Anzahl von Durchsatzeinheiten * Grenzwerte (1 MB pro Sekunde für eingehenden Datenverkehr oder 1.000 Anforderungen für eingehende Anforderungen/Sekunde, 2 MB pro Sekunde für ausgehenden Datenverkehr), erhöhen Sie die Anzahl der Durchsatzeinheiten, indem Sie die Seite Skalierung (im linken Menü) eines Event Hubs-Namespace verwenden, um manuell hochzuskalieren, oder verwenden Sie das Feature Automatische Vergrößerung von Event Hubs. Sie können auf bis zu 40 TUs skalieren, wenn Sie den Namespace manuell oder automatisch skalieren.
Fehlercode 50008
Dieser Fehler sollte kaum auftreten. Er tritt auf, wenn der Container, der Code für Ihren Namespace ausführt, nicht über ausreichend CPU-Kapazität verfügt – wenige Sekunden vor Beginn des Event Hubs-Lastenausgleichs.
Lösung: Beschränken Sie Aufrufe auf die GetRuntimeInformation-Methode. Azure Event Hubs unterstützt bis zu 50 Aufrufe von GetRuntimeInfo pro Sekunde und pro Consumergruppe. Sobald der Grenzwert erreicht wurde, erhalten Sie eventuell eine ähnliche Ausnahme wie die folgende:
ExceptionId: 00000000000-00000-0000-a48a-9c908fbe84f6-ServerBusyException: The request was terminated because the namespace 75248:aaa-default-eventhub-ns-prodb2b is being throttled. Error code : 50008. Please wait 10 seconds and try again.
Nächste Schritte
Weitere Informationen zu Event Hubs finden Sie unter den folgenden Links: