Event Hubs-berichtenuitzonderingen - .NET (verouderd)
Deze sectie bevat de .NET-uitzonderingen die worden gegenereerd door .NET Framework-API's.
Belangrijk
Sommige van de uitzonderingen die in het artikel worden vermeld, zijn alleen van toepassing op verouderde Event Hubs .NET-bibliotheek. Bijvoorbeeld: Microsoft.ServiceBus.* uitzonderingen.
Zie EventHubsException - .NET voor meer informatie over de EventHubsException die door de nieuwe .NET-bibliotheek is gegenereerd
Op 30 september 2026 gaan we de Azure Service Bus SDK-bibliotheken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus en com.microsoft.azure.servicebus buiten gebruik stellen, die niet voldoen aan de Azure SDK-richtlijnen. We beëindigen ook de ondersteuning van het SBMP-protocol, zodat u dit protocol na 30 september 2026 niet meer kunt gebruiken. Migreer naar de nieuwste Azure SDK-bibliotheken, die vóór die datum essentiële beveiligingsupdates en verbeterde mogelijkheden bieden.
Hoewel de oudere bibliotheken nog steeds meer dan 30 september 2026 kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.
Uitzonderingscategorieën
De .NET API's van Event Hubs genereren uitzonderingen die in de volgende categorieën kunnen vallen, samen met de bijbehorende actie die u kunt ondernemen om ze te herstellen:
Fout bij het coderen van gebruikers:
- System.ArgumentException
- System.InvalidOperationException
- System.OperationCanceledException
- System.Runtime.Serialization.SerializationException
Algemene actie: probeer de code op te lossen voordat u doorgaat.
Installatie-/configuratiefout:
- Microsoft.ServiceBus.Messaging.MessagingEntityNotFoundException
- Microsoft.Azure.EventHubs.MessagingEntityNotFoundException
- System.UnauthorizedAccessException
Algemene actie: Controleer uw configuratie en wijzig indien nodig.
Tijdelijke uitzonderingen:
- Microsoft.ServiceBus.Messaging.MessagingException
- Microsoft.ServiceBus.Messaging.ServerBusyException
- Microsoft.Azure.EventHubs.ServerBusyException
- Microsoft.ServiceBus.Messaging.MessagingCommunicationException
Algemene actie: voer de bewerking opnieuw uit of stel gebruikers op de hoogte.
Andere uitzonderingen:
- System.Transactions.TransactionException
- System.TimeoutException
- Microsoft.ServiceBus.Messaging.MessageLockLostException
- Microsoft.ServiceBus.Messaging.SessionLockLostException
Algemene actie: specifiek voor het uitzonderingstype; raadpleeg de tabel in de volgende sectie.
Uitzonderingstypen
De volgende tabel bevat uitzonderingstypen voor berichten, de oorzaken en de voorgestelde actie die u kunt ondernemen.
Type uitzondering | Beschrijving/oorzaak/voorbeelden | Voorgestelde actie | Opmerking over automatisch/onmiddellijk opnieuw proberen |
---|---|---|---|
TimeoutException | De server heeft niet gereageerd op de aangevraagde bewerking binnen de opgegeven tijd, die wordt beheerd door OperationTimeout. De aangevraagde bewerking kan zijn voltooid op de server. Deze uitzondering kan optreden vanwege vertragingen in het netwerk of andere infrastructuur. | Controleer de systeemstatus op consistentie en probeer het indien nodig opnieuw. Zie TimeoutException. |
In sommige gevallen kan het opnieuw proberen helpen; logica voor opnieuw proberen toe te voegen aan code. |
InvalidOperationException | De aangevraagde gebruikersbewerking is niet toegestaan binnen de server of service. Zie het uitzonderingsbericht voor meer informatie. Als het bericht bijvoorbeeld is ontvangen in de modus ReceiveAndDelete, wordt deze uitzondering gegenereerd. | Controleer de code en de documentatie. Controleer of de aangevraagde bewerking geldig is. | Opnieuw proberen helpt niet. |
OperationCanceledException | Er wordt geprobeerd een bewerking aan te roepen voor een object dat al is gesloten, afgebroken of verwijderd. In zeldzame gevallen wordt de omgevingstransactie al verwijderd. | Controleer de code en zorg ervoor dat er geen bewerkingen worden aangeroepen voor een verwijderd object. | Opnieuw proberen helpt niet. |
UnauthorizedAccessException | Het TokenProvider-object kan geen token verkrijgen, het token is ongeldig of het token bevat niet de claims die nodig zijn om de bewerking uit te voeren. | Zorg ervoor dat de tokenprovider is gemaakt met de juiste waarden. Controleer de configuratie van de Access Control Service. | In sommige gevallen kan het opnieuw proberen helpen; logica voor opnieuw proberen toe te voegen aan code. |
ArgumentException ArgumentNullException ArgumentOutOfRangeException |
Een of meer argumenten die aan de methode worden opgegeven, zijn ongeldig. De URI die is opgegeven bij NamespaceManager of Create bevat padsegmenten. Het URI-schema dat is opgegeven bij NamespaceManager of Create , is ongeldig. De eigenschapswaarde is groter dan 32 kB. | Controleer de aanroepende code en controleer of de argumenten juist zijn. | Opnieuw proberen helpt niet. |
Microsoft.ServiceBus.MessagingEntityNotFoundException Microsoft.Azure.EventHubs MessagingEntityNotFoundException |
De entiteit die is gekoppeld aan de bewerking bestaat niet of is verwijderd. | Zorg ervoor dat de entiteit bestaat. | Opnieuw proberen helpt niet. |
MessagingCommunicationException | Client kan geen verbinding maken met Event Hubs. | Zorg ervoor dat de opgegeven hostnaam juist is en dat de host bereikbaar is. | Het opnieuw proberen kan helpen als er onregelmatige verbindingsproblemen zijn. |
Microsoft.ServiceBus.Messaging ServerBusyException Microsoft.Azure.EventHubs ServerBusyException |
De service kan de aanvraag momenteel niet verwerken. | Client kan een bepaalde tijd wachten en de bewerking opnieuw uitvoeren. Zie ServerBusyException. |
De client kan het na een bepaald interval opnieuw proberen. Als een nieuwe poging resulteert in een andere uitzondering, controleert u het gedrag van die uitzondering. |
MessagingException | Algemene berichtuitzondering die in de volgende gevallen kan worden gegenereerd: er wordt geprobeerd een QueueClient te maken met behulp van een naam of pad dat deel uitmaakt van een ander entiteitstype (bijvoorbeeld een onderwerp). Er wordt geprobeerd een bericht te verzenden dat groter is dan 1 MB. Er is een fout opgetreden tijdens de verwerking van de aanvraag door de server of service. Zie het uitzonderingsbericht voor meer informatie. Deze uitzondering is meestal een tijdelijke uitzondering. | Controleer de code en zorg ervoor dat alleen serialiseerbare objecten worden gebruikt voor de berichttekst (of gebruik een aangepaste serialisatiefunctie). Raadpleeg de documentatie voor de ondersteunde waardetypen van de eigenschappen en gebruik alleen ondersteunde typen. Controleer de eigenschap IsTransient . Als dit waar is, kunt u de bewerking opnieuw proberen. | Gedrag voor opnieuw proberen is niet gedefinieerd en kan niet helpen. |
MessagingEntityAlreadyExistsException | Probeer een entiteit te maken met een naam die al wordt gebruikt door een andere entiteit in die servicenaamruimte. | Verwijder de bestaande entiteit of kies een andere naam voor de entiteit die moet worden gemaakt. | Opnieuw proberen helpt niet. |
QuotaExceededException | De berichtenentiteit heeft de maximale toegestane grootte bereikt. Deze uitzondering kan optreden als het maximum aantal ontvangers (dat 5 is) al is geopend op groepsniveau per consument. | Maak ruimte in de entiteit door berichten van de entiteit of subqueues te ontvangen. Zie QuotaExceededException |
Het opnieuw proberen kan helpen als berichten ondertussen zijn verwijderd. |
MessagingEntityDisabledException | Aanvraag voor een runtimebewerking op een uitgeschakelde entiteit. | Activeer de entiteit. | Het opnieuw proberen kan helpen als de entiteit in de tussentijd is geactiveerd. |
Microsoft.ServiceBus.Messaging MessageSizeExceededException Microsoft.Azure.EventHubs MessageSizeExceededException |
Een nettolading van een bericht overschrijdt de limiet van 1 MB. Deze limiet van 1 MB is voor het totale bericht, waaronder systeemeigenschappen en eventuele .NET-overhead. | Verklein de nettolading van het bericht en voer de bewerking opnieuw uit. | Opnieuw proberen helpt niet. |
QuotaExceededException
QuotaExceededException geeft aan dat een quotum voor een bepaalde entiteit is overschreden.
Deze uitzondering kan optreden als het maximum aantal ontvangers (5) al is geopend op groepsniveau per consument.
Event Hubs
Event Hubs heeft een limiet van 20 consumentengroepen per Event Hubs. Wanneer u meer probeert te maken, ontvangt u een QuotaExceededException.
TimeoutException
Een TimeoutException geeft aan dat een door de gebruiker geïnitieerde bewerking langer duurt dan de time-out voor de bewerking.
Voor Event Hubs wordt de time-out opgegeven als onderdeel van de verbindingsreeks of via ServiceBusConnectionStringBuilder. Het foutbericht zelf kan variëren, maar bevat altijd de time-outwaarde die is opgegeven voor de huidige bewerking.
Time-outs kunnen optreden tijdens of tussen onderhoudsbewerkingen, zoals service-updates van Event Hubs (of) besturingssysteemupdates voor resources die de service uitvoeren. Tijdens besturingssysteemupdates worden entiteiten verplaatst en worden knooppunten bijgewerkt of opnieuw opgestart, wat time-outs kan veroorzaken. Zie sla voor Event Hubs voor informatie over service level agreement (SLA) voor de Azure Event Hubs-service.
Veelvoorkomende oorzaken
Er zijn twee veelvoorkomende oorzaken voor deze fout: onjuiste configuratie of een tijdelijke servicefout.
- Onjuiste configuratie De time-out van de bewerking is mogelijk te klein voor de operationele voorwaarde. De standaardwaarde voor de time-out voor de bewerking in de client-SDK is 60 seconden. Controleer of de waarde voor uw code is ingesteld op iets te klein. De voorwaarde van het netwerk- en CPU-gebruik kan van invloed zijn op de tijd die nodig is om een bepaalde bewerking te voltooien, dus de time-out van de bewerking mag niet worden ingesteld op een kleine waarde.
- Tijdelijke servicefout Soms kan de Event Hubs-service vertragingen ondervinden bij het verwerken van aanvragen, bijvoorbeeld tijdens perioden met veel verkeer. In dergelijke gevallen kunt u de bewerking na een vertraging opnieuw uitvoeren totdat de bewerking is geslaagd. Als dezelfde bewerking na meerdere pogingen nog steeds mislukt, gaat u naar de azure-servicestatussite om te zien of er bekende servicestoringen zijn.
ServerBusyException
Een Microsoft.ServiceBus.Messaging.ServerBusyException of Microsoft.Azure.EventHubs.ServerBusyException geeft aan dat een server overbelast is. Er zijn twee relevante foutcodes voor deze uitzondering.
Foutcode 50002
Deze fout kan om een van de volgende twee redenen optreden:
De belasting wordt niet gelijkmatig verdeeld over alle partities op de Event Hub en één partitie raakt de beperking van de lokale doorvoereenheid.
Oplossing: Revising the partition distribution strategy or trying EventHubClient.Send(eventDataWithOutPartitionKey) might help.
De Event Hubs-naamruimte beschikt niet over voldoende doorvoereenheden (u kunt het scherm Metrische gegevens controleren in het venster Event Hubs-naamruimte in Azure Portal om te bevestigen). In de portal worden geaggregeerde gegevens (1 minuut) weergegeven, maar we meten de doorvoer in realtime, dus dit is slechts een schatting.
Oplossing: Het verhogen van de doorvoereenheden in de naamruimte kan helpen.
U kunt doorvoereenheden configureren op de pagina Schaal of Overzicht van uw Event Hubs-naamruimtepagina in Azure Portal. U kunt ook automatisch opschalen, die automatisch omhoog wordt geschaald door het aantal doorvoereenheden te verhogen, om te voldoen aan de gebruiksbehoeften.
Doorvoereenheden (RU's) zijn van toepassing op alle Event Hubs-naamruimten in een Event Hubs-naamruimte. Dit betekent dat u TU's koopt op naamruimteniveau en wordt gedeeld tussen de Event Hubs onder die naamruimte. Elke TU geeft de naamruimte de volgende mogelijkheden:
- Maximaal 1 MB per seconde aan ingangsgebeurtenissen (gebeurtenissen die naar een Event Hub worden verzonden), maar niet meer dan duizend ingangsgebeurtenissen, beheerbewerkingen of beheer-API-aanroepen per seconde.
- Maximaal 2 MB per seconde aan uitgangsgebeurtenissen (gebeurtenissen die vanuit een Event Hub worden verbruikt), maar niet meer dan 4096 uitgangsgebeurtenissen.
- Maximaal 84 GB aan gebeurtenisopslag (voldoende voor de standaard retentieperiode van 1 uur).
Ga op de pagina Overzicht in de sectie Metrische gegevens weergeven naar het tabblad Doorvoer . Selecteer de grafiek om deze te openen in een groter venster met intervallen van 1 minuut op de x-as. Bekijk de piekwaarden en deel ze door 60 om binnenkomende bytes/seconde of uitgaande bytes per seconde op te halen. Gebruik een vergelijkbare benadering om het aantal aanvragen per seconde te berekenen op piektijden op het tabblad Aanvragen .
Als u waarden ziet die hoger zijn dan het aantal TU's * -limieten (1 MB per seconde voor inkomend verkeer of 1000 aanvragen voor inkomend/seconde, 2 MB per seconde voor uitgaand verkeer), verhoogt u het aantal TU's met behulp van de pagina Schaal (in het linkermenu) van een Event Hubs-naamruimte om handmatig hoger te schalen of om de functie Voor automatisch vergroten van Event Hubs te gebruiken. U kunt maximaal 40 RU's schalen wanneer u handmatig schaalt of automatisch de naamruimte schaalt.
Foutcode 50008
Deze fout zou zelden moeten optreden. Dit gebeurt wanneer de container waarop code voor uw naamruimte wordt uitgevoerd, laag is op DE CPU, niet langer dan een paar seconden voordat de Event Hubs-load balancer begint.
Oplossing: Beperk aanroepen naar de Methode GetRuntimeInformation. Azure Event Hubs ondersteunt maximaal 50 aanroepen per seconde per consumentengroep naar GetRuntimeInfo per seconde. U kunt een uitzondering ontvangen die vergelijkbaar is met de volgende uitzondering zodra de limiet is bereikt:
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.
Volgende stappen
U kunt meer informatie over Event Hubs vinden via de volgende koppelingen: