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

V této části jsou uvedeny výjimky rozhraní .NET generované rozhraním API .NET Framework.

Důležité

Některé z výjimek uvedených v článku se vztahují jenom na starší knihovny Event Hubs .NET. Například: Microsoft. ServiceBus. * Exceptions.

Informace o EventHubsException vyvolaném novou knihovnou .NET najdete v tématu EventHubsException-.NET .

Kategorie výjimek

Rozhraní API Event Hubs .NET generují výjimky, které mohou být v následujících kategoriích, spolu s přidruženou akcí, kterou můžete provést při pokusu o jejich opravu:

Typy výjimek

V následující tabulce jsou uvedeny typy výjimek zasílání zpráv a jejich příčiny a poznámky navrhovaná akce, které můžete provést.

Typ výjimky Popis/příčiny/příklady Navrhovaná akce Poznámka k automatickému/okamžitému opakování
TimeoutException Server neodpověděl na požadovanou operaci v zadaném čase, který je řízen OperationTimeout. Je možné, že server dokončil požadovanou operaci. Tato výjimka může nastat v důsledku zpoždění sítě nebo jiné infrastruktury. Ověřte konzistenci stavu systému a v případě potřeby akci opakujte.
Viz TimeoutException.
V některých případech může být užitečné zkusit to znovu. Přidejte do kódu logiku opakování.
InvalidOperationException Požadovaná operace uživatele není povolena v rámci serveru nebo služby. Podrobnosti najdete ve zprávě výjimky. Například kompletní vygeneruje tuto výjimku, pokud byla zpráva přijata v režimu ReceiveAndDelete . Podívejte se na kód a dokumentaci. Ujistěte se, že požadovaná operace je platná. Zkuste to znovu.
OperationCanceledException Došlo k pokusu o vyvolání operace u objektu, který již byl uzavřen, přerušen nebo vyřazen. Ve výjimečných případech je ambientní transakce již uvolněna. Zkontrolujte kód a ujistěte se, že nevyvolává operace u uvolněného objektu. Zkuste to znovu.
UnauthorizedAccessException Objekt TokenProvider nemohl získat token, token je neplatný nebo token neobsahuje deklarace identity vyžadované k provedení operace. Ujistěte se, že Poskytovatel tokenů je vytvořený se správnými hodnotami. Ověřte konfiguraci Access Control Service. V některých případech může být užitečné zkusit to znovu. Přidejte do kódu logiku opakování.
ArgumentException
ArgumentNullException
ArgumentOutOfRangeException
Jeden nebo více argumentů dodaných metodě je neplatných. Identifikátor URI zadaný pro NamespaceManager nebo Create obsahuje segmenty cesty. Schéma identifikátoru URI zadané pro NamespaceManager nebo Vytvoření je neplatné. Hodnota vlastnosti je větší než 32 KB. Zkontrolujte kód volajícího a ujistěte se, že jsou argumenty správné. Nemůžete to zkusit znovu.
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. Nemůžete to zkusit znovu.
MessagingCommunicationException Klient nemůže navázat připojení k centru událostí. Ujistěte se, že je zadaný název hostitele správný a že je hostitel dosažitelný. Zkuste to znovu, pokud dojde k problémům s přerušovaným připojením.
Microsoft. ServiceBus. Messaging výjimka serverbusyexception

Microsoft. Azure. EventHubs výjimka serverbusyexception
Služba v tuto chvíli nemůže zpracovat požadavek. Klient může na určitou dobu počkat a pak operaci zopakovat.
Viz výjimka serverbusyexception.
Klient může po určitém intervalu opakovat pokus. Pokud výsledkem opakování dojde k jiné výjimce, ověřte chování této výjimky znovu.
MessagingException Obecná výjimka zasílání zpráv, která může být vyvolána v následujících případech: pokus o vytvoření QueueClient pomocí názvu nebo cesty, která patří k jinému typu entity (například téma). Byl proveden pokus o odeslání zprávy větší než 1 MB. U serveru nebo služby došlo k chybě během zpracování žádosti. Podrobnosti najdete ve zprávě výjimky. Tato výjimka je obvykle přechodný výjimkou. Zkontrolujte kód a zajistěte, aby se pro tělo zprávy používaly pouze serializovatelné objekty (nebo použijte vlastní serializátor). Vyhledejte v dokumentaci podporované typy hodnot vlastností a používejte pouze podporované typy. Ověřte vlastnost- přechodný . Pokud má hodnotu true, můžete operaci zopakovat. Chování při opakování není definované a nemusí pomáhat.
MessagingEntityAlreadyExistsException Pokusí se vytvořit entitu s názvem, který už používá jiná entita v daném oboru názvů služby. Odstraňte existující entitu nebo vyberte jiný název entity, která se má vytvořit. Nemůžete to zkusit znovu.
QuotaExceededException Entita zasílání zpráv dosáhla maximální povolené velikosti. Tato výjimka může nastat, pokud je maximální počet přijímačů (5) již otevřen na úrovni skupiny pro jednotlivé uživatele. Přiřadíte místo v entitě příjem zpráv z entity nebo jejích podfront.
Viz QuotaExceededException
Pokud se zprávy během této doby odstranily, může to zkusit znovu.
MessagingEntityDisabledException Požadavek na běhovou operaci u zakázané entity Aktivujte entitu. Zkuste to znovu, pokud se entita aktivovala průběžně.
Microsoft. ServiceBus. Messaging MessageSizeExceededException

Microsoft. Azure. EventHubs MessageSizeExceededException
Datová část zprávy překračuje limit 1 MB. Tento limit 1 MB slouží jako celková zpráva, která může zahrnovat systémové vlastnosti a jakékoli režie .NET. Snižte velikost datové části zprávy a potom operaci opakujte. Nemůžete to zkusit znovu.

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, pokud je maximální počet přijímačů (5) již otevřen na úrovni skupiny pro jednotlivé uživatele.

Event Hubs

Event Hubs má limit 20 skupin uživatelů na centrum událostí. Když se pokusíte vytvořit další, dostanete QuotaExceededException.

TimeoutException

TimeoutException označuje, že operace iniciovaná uživatelem trvá déle, než je časový limit operace.

Pro Event Hubs je časový limit zadán buď jako součást připojovacího řetězce, nebo prostřednictvím ServiceBusConnectionStringBuilder. Chybová zpráva se může lišit, ale vždy obsahuje hodnotu časového limitu zadanou pro aktuální operaci.

Očekává se, že dojde k vypršení časového limitu během operací údržby, jako jsou například aktualizace služby Event Hubs (nebo) aktualizace operačního systému na prostředky, které službu spouštějí. Během aktualizace operačního systému se entity pohybují a uzly se aktualizují nebo restartují, což může způsobit vypršení časových limitů. Podrobnosti o smlouvě o úrovni služeb (SLA) pro službu Azure Event Hubs najdete v tématu SLA pro Event Hubs.

Běžné příčiny

Existují dva 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ínky příliš malý. Výchozí hodnota pro časový limit operace v sadě SDK klienta je 60 sekund. Zkontrolujte, jestli má váš kód nastavenou hodnotu příliš malý. Stav sítě a využití 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ý chybový služba V některých případech může služba Event Hubs zaznamenat prodlevy při zpracování požadavků; například během období vysokého provozu. V takových případech můžete po zpoždění operaci opakovat, dokud nebude operace úspěšná. Pokud se stejná operace stále po několika pokusech nezdařila, přejděte na stavovou lokalitu služby Azure , kde zjistíte, jestli nejsou nějaké nějaké známé výpadky služeb.

Výjimka serverbusyexception

Microsoft. ServiceBus. Messaging. výjimka serverbusyexception nebo Microsoft. Azure. EventHubs. výjimka serverbusyexception označuje, že server je 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í se rovnoměrně nedistribuuje napříč všemi oddíly v centru událostí a jeden oddíl má omezení místní jednotky propustnosti.

    Řešení: při revizi strategie distribuce oddílů nebo při pokusu o EventHubClient. Send (eventDataWithOutPartitionKey) může pomáhat.

  • Obor názvů Event Hubs nemá dostatečný počet jednotek propustnosti (můžete zaškrtnout obrazovku metriky v okně Event Hubs oboru názvů v Azure Portal pro potvrzení). Portál zobrazuje agregované informace (1 minuty), ale měříme propustnost v reálném čase, takže se jedná o pouze odhad.

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

    Jednotky propustnosti můžete nakonfigurovat na stránce škálování nebo na stránce s přehledem na stránce oboru názvů vaší Event Hubs v Azure Portal. Nebo můžete použít Automatickérozstupné, které se automaticky škálují zvýšením počtu jednotek propustnosti, aby se splnily požadavky na používání.

    Jednotky propustnosti (počet propustnosti) platí pro všechna centra událostí v oboru názvů Event Hubs. Znamená to, že si koupíte počet propustnosti na úrovni oboru názvů a sdílíte se mezi centry událostí v rámci tohoto oboru názvů. Každé z nich opravňuje obor názvů k následujícím funkcím:

    • Až 1 MB událostí příchozího přenosu dat (události odeslané do centra událostí) za sekundu, ale ne víc než 1000 událostí příchozího přenosu dat, operací správy nebo řídicích volání rozhraní API za sekundu.
    • Až 2 MB událostí odchozího přenosu dat (události spotřebované z centra událostí) za sekundu, ale ne víc než 4096 odchozích událostí.
    • Až 84 GB úložiště událostí (je dostatečné pro výchozí dobu uchovávání po dobu 24 hodin).

    Na stránce Přehled v části Zobrazit metriky přepněte na kartu propustnost . Vyberte graf pro otevření v větším okně s 1 minutou na ose x. Podívejte se na vrcholové hodnoty a rozdělte je o 60, abyste získali Příchozí bajty za sekundu nebo odchozí bajty za sekundu. Použijte podobný přístup k výpočtu počtu požadavků za sekundu v časech špičky na kartě požadavky .

    Pokud vidíte hodnoty vyšší než počet počet propustnosti * omezení (1 MB za sekundu pro příchozí nebo 1000 žádosti o přijetí za sekundu, 2 MB za sekundu pro odchozí přenosy), zvyšte počet počet propustnosti pomocí stránky škálování (na levé straně) na stránce Event Hubs oboru názvů tak, aby se ručně zvýšila velikost nebo používala funkce Automatické neploché Event Hubs. Všimněte si, že automatické rozplochelné může zvyšovat až 20 počet PROPUSTNOSTI. Pokud ho chcete zvýšit na přesně 40 počet propustnosti, odešlete žádost o podporu.

Kód chyby 50008

Tato chyba by se měla vyskytovat zřídka. K tomu dojde, pokud je v kontejneru, který spouští kód pro váš obor názvů, nedostatek procesoru – ne více než několik sekund, než začne Nástroj pro vyrovnávání zatížení Event Hubs začínat.

Řešení: Omezte volání metody getruntimeinformation –. Azure Event Hubs podporuje až 50 volání za sekundu na skupinu uživatelů na GetRuntimeInfo za sekundu. Po dosažení limitu se může zobrazit výjimka podobná té 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: