Sdílet prostřednictvím


Výjimky zasílání zpráv služby Event Hubs – .NET (starší verze)

Tato část obsahuje seznam výjimek rozhraní .NET generovaných rozhraními API rozhraní .NET Framework.

Důležité

Některé výjimky uvedené v článku platí jenom pro starší knihovnu .NET služby Event Hubs. Například: Výjimky Microsoft.ServiceBus.*

Informace o eventHubsException vyvolané novou knihovnou .NET naleznete v tématu EventHubsException – .NET

30. září 2026 vyřadíme knihovny sady SDK služby Azure Service Bus pro WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus a com.microsoft.azure.servicebus, které nevyhovují pokynům sady Azure SDK. Také ukončíme podporu protokolu SBMP, takže tento protokol už nebudete moct používat po 30. září 2026. Před tímto datem migrujte na nejnovější knihovny sady Azure SDK, které nabízejí důležité aktualizace zabezpečení a vylepšené funkce.

I když starší knihovny je možné používat i po 30. září 2026, nebudou už od Microsoftu dostávat oficiální podporu a aktualizace. Další informace najdete v oznámení o vyřazení podpory.

Kategorie výjimek

Rozhraní .NET API služby Event Hubs generují výjimky, které můžou spadat do následujících kategorií, spolu s přidruženou akcí, kterou můžete provést a zkusit je opravit:

Typy výjimek

Následující tabulka uvádí typy výjimek zasílání zpráv a jejich příčiny a navrhované akce, které můžete provést.

Typ výjimky Popis, příčina/ příklady Navrhovaná akce Poznámka k automatickému nebo okamžitému opakování
TimeoutException Server neodpověděl na požadovanou operaci v zadaném čase, který je řízen operací OperationTimeout. Server mohl dokončit požadovanou operaci. K této výjimce může dojít kvůli zpoždění sítě nebo jiné infrastruktury. Zkontrolujte konzistenci systému a v případě potřeby to zkuste znovu.
Viz TimeoutException.
Opakování může v některých případech pomoct; přidání logiky opakování do kódu
Invalidoperationexception Požadovaná operace uživatele není v rámci serveru nebo služby povolená. Podrobnosti najdete ve zprávě o výjimce. Například Complete vygeneruje tuto výjimku, pokud byla zpráva přijata v režimu ReceiveAndDelete. Zkontrolujte kód a dokumentaci. Ujistěte se, že požadovaná operace je platná. Opakování nepomůže.
Operationcanceledexception Došlo k pokusu o vyvolání operace u objektu, který již byl uzavřen, přerušen nebo uvolněn. Ve výjimečných případech je okolí transakce již uvolněna. Zkontrolujte kód a ujistěte se, že nevolá operace s odstraněným objektem. Opakování nepomůže.
Unauthorizedaccessexception Objekt TokenProvider nemohl získat token, token je neplatný nebo token neobsahuje deklarace identity potřebné k provedení operace. Ujistěte se, že je zprostředkovatel tokenu vytvořen se správnými hodnotami. Zkontrolujte konfiguraci služby Řízení přístupu. Opakování může v některých případech pomoct; přidání logiky opakování do kódu
Argumentexception
Argumentnullexception
ArgumentOutOfRangeException
Jeden nebo více argumentů zadaných metodě je neplatný. Identifikátor URI zadaný pro NamespaceManager nebo Create obsahuje segmenty cest. Schéma identifikátoru URI zadané pro NamespaceManager nebo Create je neplatné. Hodnota vlastnosti je větší než 32 kB. Zkontrolujte volající kód a ujistěte se, že jsou argumenty správné. Opakování nepomůže.
Microsoft.ServiceBus.Messaging MessagingEntityNotFoundException

Microsoft.Azure.EventHubs MessagingEntityNotFoundException
Entita přidružená k operaci neexistuje nebo byla odstraněna. Ujistěte se, že entita existuje. Opakování nepomůže.
MessagingCommunicationException Klient nemůže navázat připojení ke službě Event Hubs. Ujistěte se, že je zadaný název hostitele správný a hostitel je dostupný. Pokud dochází k přerušovaným problémům s připojením, může to pomoct opakování.
Microsoft.ServiceBus.Messaging ServerBusyException

Microsoft.Azure.EventHubs ServerBusyException
Služba v tuto chvíli nemůže požadavek zpracovat. Klient může nějakou dobu počkat a pak operaci zopakovat.
Viz ServerBusyException.
Klient se může po určitém intervalu opakovat. Pokud opakování vede k jiné výjimce, zkontrolujte chování opakování této výjimky.
MessagingException Obecná výjimka zasílání zpráv, která může být vyvolán v následujících případech: Provede se pokus o vytvoření QueueClient pomocí názvu nebo cesty, která patří jinému typu entity (například tématu). Při pokusu o odeslání zprávy větší než 1 MB. Při zpracování požadavku došlo k chybě serveru nebo služby. Podrobnosti najdete ve zprávě o výjimce. Tato výjimka je obvykle přechodná výjimka. Zkontrolujte kód a ujistěte se, že se pro text zprávy používají pouze serializovatelné objekty (nebo použijte vlastní serializátor). Projděte si dokumentaci k podporovaným typům hodnot vlastností a používejte pouze podporované typy. Zkontrolujte vlastnost IsTransient. Pokud ano, můžete operaci zopakovat. Chování opakování není definováno a nemusí vám pomoct.
MessagingEntityAlreadyExistsException Pokus o vytvoření entity s názvem, který již používá jiná entita v oboru názvů služby. Odstraňte existující entitu nebo zvolte jiný název entity, která se má vytvořit. Opakování nepomůže.
Quotaexceededexception Entita zasílání zpráv dosáhla maximální povolené velikosti. K této výjimce může dojít v případě, že maximální počet příjemců (což je 5) již bylo otevřeno na úrovni skupiny pro jednotlivé příjemce. Vytvořte v entitě prostor příjmem zpráv z entity nebo jejích dílčích front.
Viz KvótaExceededException
Opakování může pomoct, pokud se mezitím odebraly zprávy.
MessagingEntityDisabledException Žádost o operaci modulu runtime u zakázané entity Aktivujte entitu. Opakování může pomoct, pokud byla entita aktivována dočasně.
Microsoft.ServiceBus.Messaging MessageSizeExceededException

Microsoft.Azure.EventHubs MessageSizeExceededException
Datová část zprávy překračuje limit 1 MB. Tento limit 1 MB je určený pro celkovou zprávu, která může obsahovat systémové vlastnosti a veškeré režijní náklady na .NET. Zmenšete velikost datové části zprávy a zkuste operaci zopakovat. Opakování nepomůže.

Quotaexceededexception

QuotaExceededException indikuje, že došlo k překročení kvóty pro některou z entit.

K této výjimce může dojít v případě, že maximální počet příjemců (5) již byl otevřen na úrovni skupiny pro jednotlivé příjemce.

Event Hubs

Event Hubs má limit 20 skupin příjemců na službu Event Hubs. Když se pokusíte vytvořit více, obdržíte kvótuExceededException.

TimeoutException

Výjimka TimeoutException zpravidla indikuje, že operace iniciovaná uživatelem trvá déle, než je příslušný časový limit.

V případě služby Event Hubs se časový limit určuje v rámci připojovacího řetězce nebo prostřednictvím třídy ServiceBusConnectionStringBuilder. Samotná chybová zpráva se může lišit, ale vždy obsahuje hodnotu časového limitu zadanou pro aktuální operaci.

Vypršení časových limitů se dá očekávat během operací údržby nebo mezi nimi, například při aktualizacích služby Event Hubs nebo aktualizacích operačního systému u prostředků, pomocí kterých je služba spuštěna. Během aktualizací operačního systému se přesunují entity a aktualizují se nebo se restartují uzly, což může způsobovat vypršení časových limitů. Podrobnosti o smlouvě o úrovni služeb (SLA) pro službu Azure Event Hubs najdete ve smlouvě SLA pro službu Event Hubs.

Běžné příčiny

Existují dvě běžné příčiny této chyby: nesprávná konfigurace nebo přechodná chyba služby.

  • Nesprávná konfigurace : Časový limit operace může být pro provozní podmínku příliš malý. Výchozí hodnota časového limitu operace v klientské sadě SDK je 60 sekund. Zkontrolujte, jestli má váš kód nastavenou hodnotu na něco příliš malého. Podmínka využití sítě a procesoru může ovlivnit dobu potřebnou k dokončení konkrétní operace, takže časový limit operace by neměl být nastavený na malou hodnotu.
  • Přechodná chyba služby Někdy může dojít ke zpoždění při zpracování požadavků, například během období vysokého provozu. V takových případech můžete operaci po zpoždění zopakovat, dokud operace nebude úspěšná. Pokud stejná operace po několika pokusech stále selže, přejděte na web stavu služby Azure a zjistěte, jestli nedošlo k nějakým známým výpadkům služeb.

ServerBusyException

A Microsoft.ServiceBus.Messaging.ServerBusyException nebo Microsoft.Azure.EventHubs.ServerBusyException indikuje, že je server přetížen. Pro tuto výjimku existují dva relevantní kódy chyb.

Kód chyby 50002

K této chybě může dojít z jednoho ze dvou důvodů:

  • Zatížení není rovnoměrně rozdělené mezi všechny oddíly v centru událostí a jeden oddíl dosáhne omezení místní jednotky propustnosti.

    Řešení: Revize strategie distribuce oddílů nebo vyzkoušení eventHubClient.Send(eventDataWithOutPartitionKey) může pomoct.

  • Obor názvů služby Event Hubs nemá dostatek jednotek propustnosti (zkontrolujte obrazovku Metriky v okně oboru názvů služby Event Hubs na webu Azure Portal a ověřte to). Portál zobrazuje agregované (1 minutové) informace, ale propustnost měříme v reálném čase – takže se jedná jenom o odhad.

    Řešení: Zvýšení jednotek propustnosti v oboru názvů může pomoct.

    Jednotky propustnosti můžete nakonfigurovat na stránce Škálování nebo na stránce Přehled stránky oboru názvů služby Event Hubs na webu Azure Portal. Nebo můžete použít automatické nafouknutí, které automaticky vertikálně navýší kapacitu zvýšením počtu jednotek propustnosti, aby vyhovovaly potřebám využití.

    Jednotky propustnosti (TU) se vztahují na všechna centra událostí v oboru názvů služby Event Hubs. Znamená to, že zakoupíte jednotky TU na úrovni oboru názvů a sdílíte je mezi centry událostí v rámci daného oboru názvů. Každý tu má obor názvů nárok na následující možnosti:

    • Až 1 MB událostí příchozího přenosu dat (tzn. událostí odeslaných do centra událostí) za sekundu, ale ne víc než 1 000 událostí příchozího přenosu dat, řídicích operací nebo kontrolních volání rozhraní API za sekundu.
    • Až 2 MB událostí výchozího přenosu dat (tzn. událostí spotřebovaných z centra událostí) za sekundu, ale ne více než 4 096 událostí výchozího přenosu dat.
    • Až 84 GB úložiště událostí (dostatek pro výchozí dobu uchovávání 1 hodiny).

    Na stránce Přehled v části Zobrazit metriky přepněte na kartu Propustnost. Výběrem grafu ho otevřete ve větším okně s 1minutovými intervaly na ose x. Podívejte se na hodnoty ve špičce a vydělte je 60, abyste získali příchozí bajty za sekundu nebo odchozí bajty za sekundu. Podobný přístup použijte k výpočtu počtu požadavků za sekundu ve špičce na kartě Požadavky .

    Pokud se zobrazí hodnoty vyšší než počet limitů jednotek TU * (1 MB za sekundu pro příchozí přenos dat nebo 1000 požadavků pro příchozí přenos dat za sekundu, 2 MB za sekundu pro výchozí přenos dat), zvyšte počet jednotek TU pomocí stránky Škálování (v nabídce vlevo) oboru názvů služby Event Hubs, abyste mohli vertikálně navýšit nebo použít funkci automatického nafukování služby Event Hubs. Při ručním škálování nebo automatickém škálování oboru názvů můžete vertikálně navýšit kapacitu až 40 jednotek TU.

Kód chyby 50008

K této chybě by mělo dojít jen zřídka. Dochází k tomu, že kontejner, na kterém běží kód pro váš obor názvů, má nedostatek procesoru – ne více než několik sekund před zahájením nástroje pro vyrovnávání zatížení služby Event Hubs.

Řešení: Omezte volání metody GetRuntimeInformation. Azure Event Hubs podporuje až 50 volání za sekundu na skupinu příjemců do getRuntimeInfo za sekundu. Po dosažení limitu se může zobrazit výjimka podobná následující:

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.

Další kroky

Další informace o službě Event Hubs najdete na následujících odkazech: