Eccezioni di messaggistica di Hub eventi - .NET (legacy)
Questa sezione elenca le eccezioni .NET generate dalle API .NET Framework.
Importante
Alcune delle eccezioni elencate nell'articolo si applicano solo alla libreria .NET di Hub eventi legacy. Ad esempio: Eccezioni Microsoft.ServiceBus.* .
Per informazioni su EventHubsException generato dalla nuova libreria .NET, vedere EventHubsException - .NET
Il 30 settembre 2026 verranno ritirati le librerie bus di servizio di Azure SDK WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus e com.microsoft.azure.servicebus, che non sono conformi alle linee guida di Azure SDK. Il supporto del protocollo SBMP verrà terminato, quindi non sarà più possibile usare questo protocollo dopo il 30 settembre 2026. Eseguire la migrazione alle librerie più recenti di Azure SDK, che offrono aggiornamenti critici della sicurezza e funzionalità migliorate, prima di tale data.
Anche se le librerie precedenti possono ancora essere usate oltre il 30 settembre 2026, non riceveranno più il supporto e gli aggiornamenti ufficiali da Microsoft. Per altre informazioni, vedere l'annuncio di ritiro del supporto.
Categorie di eccezioni
Le API .NET di Hub eventi generano eccezioni che possono rientrare nelle categorie seguenti, insieme all'azione associata che è possibile eseguire per provare a risolverle:
Errore di codifica utente:
- System.ArgumentException
- System.InvalidOperationException
- System.OperationCanceledException
- System.Runtime.Serialization.SerializationException
Azione generale: provare a correggere il codice prima di procedere.
Errore di installazione/configurazione:
- Microsoft.ServiceBus.Messaging.MessagingEntityNotFoundException
- Microsoft.Azure.EventHubs.MessagingEntityNotFoundException
- System.UnauthorizedAccessException
Azione generale: esaminare la configurazione e modificare, se necessario.
Eccezioni temporanee:
- Microsoft.ServiceBus.Messaging.MessagingException
- Microsoft.ServiceBus.Messaging.ServerBusyException
- Microsoft.Azure.EventHubs.ServerBusyException
- Microsoft.ServiceBus.Messaging.MessagingCommunicationException
Azione generale: ripetere l'operazione o inviare una notifica agli utenti.
Altre eccezioni:
- System.Transactions.TransactionException
- System.TimeoutException
- Microsoft.ServiceBus.Messaging.MessageLockLostException
- Microsoft.ServiceBus.Messaging.SessionLockLostException
Azione generale: specifica del tipo di eccezione; fare riferimento alla tabella nella sezione seguente.
Tipi di eccezioni
La tabella seguente elenca i tipi di eccezioni di messaggistica, ne riporta le possibili cause, e indica l'azione suggerita che è possibile eseguire.
Tipo di eccezione | Descrizione/Causa/Esempi | Azione suggerita | Nota sulla ripetizione automatica/immediata |
---|---|---|---|
TimeoutException | Il server non ha risposto all'operazione richiesta entro il tempo specificato, controllato da OperationTimeout. Il server può aver completato l'operazione richiesta. Questa eccezione può verificarsi a causa di ritardi di rete o di altre infrastrutture. | Controllare lo stato del sistema per verificarne la coerenza e, se necessario, ripetere l'operazione. Vedere TimeoutException. |
In alcuni casi può essere utile ripetere l'operazione; aggiungere al codice la logica di ripetizione dei tentativi. |
InvalidOperationException | L'operazione utente richiesta non è consentita all'interno del server o del servizio. Per informazioni dettagliate, vedere il messaggio di eccezione. Ad esempio, Complete genera questa eccezione se il messaggio è stato ricevuto in modalità ReceiveAndDelete . | Controllare il codice e la documentazione. Assicurarsi che l'operazione richiesta sia valida. | Riprovare non sarà utile. |
OperationCanceledException | È stato eseguito un tentativo di richiamare un'operazione su un oggetto già chiuso, interrotto o eliminato. In alcuni casi rari, la transazione di ambiente è già stata eliminata. | Controllare il codice e assicurarsi che non richiami le operazioni su un oggetto eliminato. | Riprovare non sarà utile. |
UnauthorizedAccessException | L'oggetto TokenProvider non è riuscito ad acquisire un token, il token non è valido o il token non contiene le attestazioni necessarie per eseguire l'operazione. | Assicurarsi che il provider di token sia stato creato con i valori corretti. Controllare la configurazione del servizio Controllo di accesso. | In alcuni casi può essere utile ripetere l'operazione; aggiungere al codice la logica di ripetizione dei tentativi. |
ArgumentException ArgumentNullException ArgumentOutOfRangeException |
Uno o più argomenti forniti al metodo non sono validi. L'URI fornito a NamespaceManager o Create contiene segmenti di percorso. Lo schema URI fornito a NamespaceManager o Create non è valido. Il valore della proprietà è maggiore di 32 KB. | Controllare il codice chiamante e assicurarsi che gli argomenti siano corretti. | Ripetere l'operazione non serve. |
Microsoft.ServiceBus.Messaging MessagingEntityNotFoundException Microsoft.Azure.EventHubs MessagingEntityNotFoundException |
L'entità associata all'operazione non esiste o è stata eliminata. | Assicurarsi che l'entità esista. | Ripetere l'operazione non serve. |
MessagingCommunicationException | Il client non è in grado di stabilire una connessione a Hub eventi. | Assicurarsi che il nome host fornito sia corretto e l'host sia raggiungibile. | Se sono presenti problemi di connettività intermittente, può essere utile ripetere l'operazione. |
Microsoft.ServiceBus.Messaging ServerBusyException Microsoft.Azure.EventHubs ServerBusyException |
In questo momento il servizio non è in grado di elaborare la richiesta. | Il client può attendere per un certo periodo di tempo ed è quindi opportuno ripetere l'operazione. Vedere ServerBusyException. |
Il client può riprovare dopo un determinato intervallo. Se viene generata un'eccezione diversa, controllare il comportamento di ripetizione del tentativo della nuova eccezione. |
MessagingException | Eccezione di messaggistica generica che può essere generata nei casi seguenti: È stato eseguito un tentativo di creare una classe QueueClient usando un nome o un percorso appartenente a un tipo di entità diverso, ad esempio un argomento. È stato eseguito un tentativo di inviare un messaggio di dimensioni superiori a 1 MB. Si è verificato un errore nel server o nel servizio durante l'elaborazione della richiesta. Per informazioni dettagliate, vedere il messaggio di eccezione. Si tratta in genere di un'eccezione temporanea. | Controllare il codice e verificare che per il corpo del messaggio siano stati usati solo oggetti serializzabili (oppure usare un serializzatore personalizzato). Consultare la documentazione per identificare i tipi di valori delle proprietà supportati e usare solo quelli. Controllare la proprietà IsTransient . Se è true, è possibile ripetere l'operazione. | Il comportamento di ripetizione dei tentativi non è definito e ripetere l'operazione può non essere utile. |
MessagingEntityAlreadyExistsException | È stato eseguito un tentativo di creare un'entità con un nome già usato da un'altra entità dello stesso spazio dei nomi del servizio. | Eliminare l'entità esistente o scegliere un nome diverso per l'entità da creare. | Ripetere l'operazione non serve. |
QuotaExceededException | L'entità di messaggistica ha raggiunto le dimensioni massime consentite. Questa eccezione può verificarsi se a livello di gruppo di consumer è già stato aperto il numero massimo di ricevitori, ovvero 5. | Creare spazio nell'entità mediante la ricezione di messaggi dall'entità o dalle relative code secondarie. Vedere QuotaExceededException |
Se nel frattempo sono stati rimossi i messaggi, può essere utile ripetere l'operazione. |
MessagingEntityDisabledException | È stata inoltrata una richiesta per un'operazione di runtime su un'entità disattivata. | Attivare l'entità. | Se nel frattempo l'entità è stata attivata, può essere utile ripetere l'operazione. |
Microsoft.ServiceBus.Messaging MessageSizeExceededException Microsoft.Azure.EventHubs MessageSizeExceededException |
Un payload del messaggio supera il limite di 1 MB. Questo limite di 1 MB è relativo al messaggio totale, che può includere le proprietà di sistema e qualsiasi overhead .NET. | Ridurre le dimensioni del payload del messaggio e quindi ripetere l'operazione. | Ripetere l'operazione non serve. |
QuotaExceededException
QuotaExceededException indica che è stata superata la quota di un'entità specifica.
Questa eccezione può verificarsi se a livello di gruppo di consumer è già stato aperto il numero massimo di ricevitori (5).
Event Hubs
Hub eventi ha un limite di 20 gruppi di consumer per hub eventi. Quando si tenta di creare più gruppi, si riceve un'eccezione di tipo QuotaExceededException.
TimeoutException
Un'eccezione di tipo TimeoutException indica che un'operazione avviata dall'utente richiede più tempo rispetto al timeout dell'operazione.
Per Hub eventi, il timeout è specificato come parte della stringa di connessione o tramite ServiceBusConnectionStringBuilder. Il messaggio di errore stesso può variare, ma contiene sempre il valore di timeout specificato per l'operazione corrente.
Si prevede il verificarsi di timeout durante o tra le operazioni di manutenzione, ad esempio gli aggiornamenti del servizio Hub eventi o gli aggiornamenti del sistema operativo sulle risorse che eseguono il servizio. Durante gli aggiornamenti del sistema operativo, le entità vengono spostate e i nodi vengono aggiornati o riavviati, causando timeout. Per informazioni dettagliate sul contratto di servizio per il servizio Hub eventi di Azure, vedere Contratto di servizio per Hub eventi.
Cause comuni
Per questo errore, esistono due cause comuni: una configurazione errata o un errore temporaneo del servizio.
- Configurazione errata: il valore di timeout dell'operazione potrebbe essere troppo ridotto per la condizione operativa. Il valore predefinito per il timeout dell'operazione dell'SDK client è 60 secondi. Verificare se il codice contiene un valore troppo piccolo. La condizione dell'utilizzo della rete e della CPU può influire sul tempo necessario per il completamento di una determinata operazione, quindi il timeout dell'operazione non deve essere impostato su un valore ridotto.
- Errore temporaneo del servizio : a volte il servizio di Hub eventi può subire ritardi nell'elaborazione delle richieste, ad esempio durante periodi di traffico elevato. In questi casi, è possibile ritentare l'operazione dopo un ritardo fino a quando l'operazione ha esito positivo. Se la stessa operazione continua ad avere esito negativo dopo diversi tentativi, visitare il sito sullo stato dei servizi Azure per verificare se esistono casi noti di interruzioni del servizio.
ServerBusyException
Microsoft.ServiceBus.Messaging.ServerBusyException o Microsoft.Azure.EventHubs.ServerBusyException indicano che il server è sovraccarico. Esistono due codici di errore relativi a questa eccezione.
Codice di errore 50002
Questo errore può verificarsi per uno dei due motivi:
Il carico non viene distribuito uniformemente in tutte le partizioni nell'hub eventi e una partizione raggiunge la limitazione dell'unità elaborate locale.
Soluzione: la revisione della strategia di distribuzione delle partizioni o il tentativo di EventHubClient.Send(eventDataWithOutPartitionKey) potrebbero risultare utili.
Lo spazio dei nomi di Hub eventi non dispone di unità elaborate sufficienti .È possibile controllare la schermata Metriche nella finestra dello spazio dei nomi di Hub eventi nella portale di Azure per confermare. Il portale mostra informazioni aggregate (1 minuto), ma viene misurata la velocità effettiva in tempo reale, quindi si tratta solo di una stima.
Risoluzione: l'aumento delle unità elaborate nello spazio dei nomi può essere utile.
È possibile configurare le unità elaborate nella pagina Scalabilità o Panoramica della pagina dello spazio dei nomi di Hub eventi nella portale di Azure. In alternativa, è possibile usare l'aumento automatico, che aumenta automaticamente aumentando il numero di unità elaborate, per soddisfare le esigenze di utilizzo.
Le unità elaborate (UR) si applicano a tutti gli hub eventi in uno spazio dei nomi di Hub eventi. Significa che le unità elaborate vengono acquistate a livello di spazio dei nomi e condivise con l'hub eventi nello spazio. Ogni unità elaborata conferisce allo spazio dei nomi le capacità seguenti:
- Fino a 1 MB al secondo di eventi in ingresso (eventi inviati a un hub eventi), ma non più di 1000 eventi in ingresso, operazioni di gestione o chiamate API di controllo al secondo.
- Fino a 2 MB al secondo di eventi in uscita (gli eventi utilizzati da un hub eventi), ma non più di 4096 eventi in uscita.
- Fino a 84 GB di spazio di archiviazione eventi (sufficiente per il periodo di conservazione predefinito di 1 ora).
Nella sezione Mostra metriche della pagina Panoramica passare alla scheda Velocità effettiva. Selezionare il grafico per aprirlo in una finestra più grande con intervalli di 1 minuto sull'asse x. Esaminare i valori di picco e dividerli per 60 per ottenere byte in ingresso/secondo o byte in uscita/secondo. Usare un approccio simile per calcolare il numero di richieste al secondo nelle ore di punta nella scheda Richieste .
Se vengono visualizzati valori superiori al numero di unità elaborate * limiti (1 MB al secondo per l'ingresso o 1000 richieste di ingresso al secondo, 2 MB al secondo per l'uscita), aumentare il numero di unità elaborate usando la pagina Scala (nel menu a sinistra) di uno spazio dei nomi di Hub eventi per aumentare manualmente o per usare la funzionalità Aumento automatico di Hub eventi. È possibile aumentare le prestazioni fino a 40 unità elaborate quando si ridimensiona manualmente o si ridimensiona automaticamente lo spazio dei nomi.
Codice errore 50008
Questo errore si verifica raramente. Si verifica quando il contenitore che esegue il codice per lo spazio dei nomi è insufficiente per la CPU, occorrono pochi secondi prima che il bilanciamento del carico dell'Hub eventi inizi.
Risoluzione: limitare le chiamate al metodo GetRuntimeInformation. Hub eventi di Azure supporta fino a 50 chiamate al secondo per gruppo di consumer a GetRuntimeInfo al secondo. Una volta raggiunto il limite, è possibile che venga visualizzata un'eccezione simile alla seguente:
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.
Passaggi successivi
Per ulteriori informazioni su Hub eventi visitare i collegamenti seguenti: