Dela via


Undantag för Event Hubs-meddelanden – .NET (äldre)

I det här avsnittet visas de .NET-undantag som genereras av .NET Framework-API:er.

Viktigt!

Några av undantagen som anges i artikeln gäller endast för äldre Event Hubs .NET-bibliotek. Exempel: Microsoft.ServiceBus.* undantag.

Information om EventHubsException som genereras av det nya .NET-biblioteket finns i EventHubsException – .NET

Den 30 september 2026 drar vi tillbaka Azure Service Bus SDK-biblioteken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus och com.microsoft.azure.servicebus, som inte följer Riktlinjerna för Azure SDK. Vi kommer också att avsluta stödet för SBMP-protokollet, så du kommer inte längre att kunna använda det här protokollet efter den 30 september 2026. Migrera till de senaste Azure SDK-biblioteken, som erbjuder kritiska säkerhetsuppdateringar och förbättrade funktioner, före det datumet.

Även om de äldre biblioteken fortfarande kan användas efter den 30 september 2026 får de inte längre officiell support och uppdateringar från Microsoft. Mer information finns i meddelandet om supportavgång.

Undantagskategorier

Event Hubs .NET-API:er genererar undantag som kan ingå i följande kategorier, tillsammans med den associerade åtgärd som du kan vidta för att försöka åtgärda dem:

Undantagstyper

I följande tabell visas undantagstyper för meddelanden och deras orsaker samt förslag på åtgärder som du kan vidta.

Undantagstyp Beskrivning/orsak/exempel Föreslagen åtgärd Obs! Vid automatiskt/omedelbart återförsök
TimeoutException Servern svarade inte på den begärda åtgärden inom den angivna tiden, som styrs av OperationTimeout. Servern kan ha slutfört den begärda åtgärden. Det här undantaget kan inträffa på grund av nätverks- eller andra infrastrukturförseningar. Kontrollera systemtillståndet för konsekvens och försök igen om det behövs.
Se TimeoutException.
Försök igen kan hjälpa i vissa fall. lägg till logik för återförsök i koden.
InvalidOperationException Den begärda användaråtgärden tillåts inte i servern eller tjänsten. Mer information finns i undantagsmeddelandet. Till exempel genererar Complete det här undantaget om meddelandet togs emot i läget ReceiveAndDelete . Kontrollera koden och dokumentationen. Kontrollera att den begärda åtgärden är giltig. Försök igen hjälper inte.
OperationCanceledException Ett försök görs att anropa en åtgärd på ett objekt som redan har stängts, avbrutits eller tagits bort. I sällsynta fall tas den omgivande transaktionen redan bort. Kontrollera koden och se till att den inte anropar åtgärder på ett borttaget objekt. Försök igen hjälper inte.
UnauthorizedAccessException TokenProvider-objektet kunde inte hämta en token, token är ogiltig eller så innehåller token inte de anspråk som krävs för att utföra åtgärden. Kontrollera att tokenprovidern har skapats med rätt värden. Kontrollera konfigurationen av åtkomstkontrolltjänsten. Försök igen kan hjälpa i vissa fall. lägg till logik för återförsök i koden.
ArgumentException
ArgumentNullException
ArgumentOutOfRangeException
Ett eller flera argument som anges i metoden är ogiltiga. Den URI som angetts för NamespaceManager eller Create innehåller sökvägssegment. URI-schemat som anges till NamespaceManager eller Create är ogiltigt. Egenskapsvärdet är större än 32 KB. Kontrollera anropskoden och kontrollera att argumenten är korrekta. Försök igen hjälper inte.
Microsoft.ServiceBus.Messaging MessagingEntityNotFoundException

Microsoft.Azure.EventHubs MessagingEntityNotFoundException
Entiteten som är associerad med åtgärden finns inte eller så har den tagits bort. Kontrollera att entiteten finns. Försök igen hjälper inte.
MessagingCommunicationException Klienten kan inte upprätta en anslutning till Event Hubs. Kontrollera att det angivna värdnamnet är korrekt och att värden kan nås. Ett nytt försök kan hjälpa om det uppstår tillfälliga anslutningsproblem.
Microsoft.ServiceBus.Messaging ServerBusyException

Microsoft.Azure.EventHubs ServerBusyException
Tjänsten kan inte bearbeta begäran just nu. Klienten kan vänta en tid och sedan försöka utföra åtgärden igen.
Se ServerBusyException.
Klienten kan försöka igen efter ett visst intervall. Om ett nytt försök resulterar i ett annat undantag kontrollerar du återförsöksbeteendet för undantaget.
MessagingException Allmänt meddelandefel som kan uppstå i följande fall: Ett försök görs att skapa en QueueClient med ett namn eller en sökväg som tillhör en annan entitetstyp (till exempel ett ämne). Ett försök görs att skicka ett meddelande som är större än 1 MB. Servern eller tjänsten påträffade ett fel under bearbetningen av begäran. Mer information finns i undantagsmeddelandet. Det här undantaget är vanligtvis ett tillfälligt undantag. Kontrollera koden och se till att endast serialiserbara objekt används för meddelandetexten (eller använd en anpassad serialiserare). Kontrollera dokumentationen för de värdetyper som stöds för egenskaperna och använd endast typer som stöds. Kontrollera egenskapen IsTransient . Om det är sant kan du försöka utföra åtgärden igen. Återförsöksbeteendet är odefinierat och kanske inte hjälper.
MessagingEntityAlreadyExistsException Försök att skapa en entitet med ett namn som redan används av en annan entitet i tjänstnamnområdet. Ta bort den befintliga entiteten eller välj ett annat namn för den entitet som ska skapas. Försök igen hjälper inte.
QuotaExceededException Meddelandeentiteten har nått sin maximala tillåtna storlek. Det här undantaget kan inträffa om det maximala antalet mottagare (som är 5) redan har öppnats på gruppnivå per konsument. Skapa utrymme i entiteten genom att ta emot meddelanden från entiteten eller dess underfrågor.
Se QuotaExceededException
Ett nytt försök kan hjälpa om meddelanden har tagits bort under tiden.
MessagingEntityDisabledException Begäran om en körningsåtgärd på en inaktiverad entitet. Aktivera entiteten. Ett nytt försök kan hjälpa om entiteten har aktiverats under tiden.
Microsoft.ServiceBus.Messaging MessageSizeExceededException

Microsoft.Azure.EventHubs MessageSizeExceededException
En nyttolast för meddelanden överskrider gränsen på 1 MB. Den här gränsen på 1 MB gäller för det totala meddelandet, som kan innehålla systemegenskaper och eventuella .NET-omkostnader. Minska storleken på meddelandenyttolasten och försök sedan utföra åtgärden igen. Försök igen hjälper inte.

QuotaExceededException

QuotaExceededException anger att en kvot för en specifik enhet har överskridits.

Det här undantaget kan inträffa om det maximala antalet mottagare (5) redan har öppnats på gruppnivå per konsument.

Event Hubs

Event Hubs har en gräns på 20 konsumentgrupper per händelsehubbar. När du försöker skapa mer får du en QuotaExceededException.

TimeoutException

Ett TimeoutException indikerar att en åtgärd som användaren har initierat tar längre tid än åtgärdens tidsgräns.

För Event Hubs anges timeouten antingen som en del av anslutningssträngen eller via ServiceBusConnectionStringBuilder. Själva felmeddelandet kan variera, men det innehåller alltid det tidsgränsvärde som angetts för den aktuella åtgärden.

Timeout förväntas uppstå under eller mellan olika underhållsåtgärder, till exempel tjänstuppdateringar i Event Hubs (eller) operativsystemuppdateringar på resurser som kör tjänsten. Under operativsystemuppdateringar flyttas entiteter runt och noder uppdateras eller startas om, vilket kan orsaka timeout. Information om serviceavtal (SLA) för Azure Event Hubs-tjänsten finns i SLA för Event Hubs.

Vanliga orsaker

Det finns två vanliga orsaker till det här felet: felaktig konfiguration eller ett tillfälligt tjänstfel.

  • Felaktig konfiguration Tidsgränsen för åtgärden kan vara för liten för drifttillståndet. Standardvärdet för tidsgränsen för åtgärden i klient-SDK:t är 60 sekunder. Kontrollera om koden har värdet inställt på något för litet. Villkoret för nätverket och CPU-användningen kan påverka den tid det tar för en viss åtgärd att slutföras, så tidsgränsen för åtgärden bör inte anges till ett litet värde.
  • Tillfälligt tjänstfel Ibland kan Event Hubs-tjänsten uppleva fördröjningar i bearbetningsbegäranden, till exempel under perioder med hög trafik. I sådana fall kan du försöka utföra åtgärden igen efter en fördröjning tills åtgärden har slutförts. Om samma åtgärd fortfarande misslyckas efter flera försök går du till statuswebbplatsen för Azure-tjänsten för att se om det finns några kända tjänstfel.

ServerBusyException

En Microsoft.ServiceBus.Messaging.ServerBusyException eller Microsoft.Azure.EventHubs.ServerBusyException anger att en server är överbelastad. Det finns två relevanta felkoder för det här undantaget.

Felkod 50002

Det här felet kan inträffa av någon av två orsaker:

  • Belastningen är inte jämnt fördelad över alla partitioner på händelsehubben, och en partition når den lokala dataflödesenhetens begränsning.

    Lösning: Det kan vara till hjälp att ändra distributionsstrategin för partitionen eller prova EventHubClient.Send(eventDataWithOutPartitionKey ).

  • Event Hubs-namnområdet har inte tillräckligt med dataflödesenheter (du kan kontrollera skärmen Mått i fönstret Event Hubs-namnområde i Azure-portalen för att bekräfta). Portalen visar aggregerad (1 minut) information, men vi mäter dataflödet i realtid – så det är bara en uppskattning.

    Lösning: Att öka dataflödesenheterna i namnområdet kan vara till hjälp.

    Du kan konfigurera dataflödesenheter på sidan Skala eller Översikt på sidan Event Hubs-namnområde i Azure-portalen. Eller så kan du använda Auto-inflate, som automatiskt skalas upp genom att öka antalet dataflödesenheter, för att uppfylla användningsbehoven.

    Dataflödesenheter (TUs) gäller för alla händelsehubbar i ett Event Hubs-namnområde. Det innebär att du köper TU:er på namnområdesnivå och delas mellan händelsehubbarna under det namnområdet. Varje TU berättigar namnområdet till följande funktioner:

    • Upp till 1 MB per sekund för ingångshändelser (händelser som skickas till en händelsehubb), men högst 1 000 ingresshändelser, hanteringsåtgärder eller API-anrop för kontroll per sekund.
    • Upp till 2 MB per sekund för utgående händelser (händelser som förbrukas från en händelsehubb), men högst 4 096 utgående händelser.
    • Upp till 84 GB händelselagring (tillräckligt för standardperioden på 1 timme).

    På sidan Översikt går du till avsnittet Visa mått och växlar till fliken Dataflöde . Välj diagrammet om du vill öppna det i ett större fönster med 1 minuters intervall på x-axeln. Titta på toppvärdena och dela upp dem med 60 för att hämta inkommande byte/sekund eller utgående byte/sekund. Använd liknande metod för att beräkna antalet begäranden per sekund vid tider med hög belastning på fliken Begäranden .

    Om du ser värden som är högre än antalet TUs * gränser (1 MB per sekund för inkommande eller 1 000 begäranden för ingress/sekund, 2 MB per sekund för utgående) ökar du antalet RU:er med hjälp av sidan Skala (på den vänstra menyn) i ett Event Hubs-namnområde för att manuellt skala högre eller för att använda funktionen Auto-inflate i Event Hubs. Du kan skala upp till 40 TUs när du skalar eller automatiskt skalar namnområdet manuellt.

Felkod 50008

Det här felet bör sällan inträffa. Det händer när containern som kör kod för ditt namnområde har ont om PROCESSOR – inte mer än några sekunder innan Lastbalanseraren för Event Hubs börjar.

Lösning: Begränsa anrop till metoden GetRuntimeInformation. Azure Event Hubs stöder upp till 50 anrop per sekund per konsumentgrupp till GetRuntimeInfo per sekund. Du kan få ett undantag som liknar följande när gränsen har nåtts:

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ästa steg

Du kan lära dig mer om Event Hubs genom att gå till följande länkar: