Eccezioni della messaggistica di Hub eventiEvent Hubs messaging exceptions

Questo articolo elenca alcune eccezioni generate dall'API di messaggistica del bus di servizio di Azure, che include Hub eventi.This article lists some of the exceptions generated by the Azure Service Bus messaging APIs, which include Event Hubs. Il documento è soggetto a modifica ed è quindi opportuno controllare periodicamente la presenza di aggiornamenti.This reference is subject to change, so check back for updates.

Categorie di eccezioniException categories

Le API di Hub eventi generano eccezioni che possono essere raggruppate nelle categorie seguenti e a ognuna delle quali è associata un'azione che è possibile eseguire per tentare di risolverla.The Event Hubs APIs generate exceptions that can fall into the following categories, along with the associated action you can take to try to fix them.

  1. Errore nella codifica dell'utente: System.ArgumentException, System.InvalidOperationException, System.OperationCanceledException, System.Runtime.Serialization.SerializationException.User coding error: System.ArgumentException, System.InvalidOperationException, System.OperationCanceledException, System.Runtime.Serialization.SerializationException. Azione generale: provare a correggere il codice prima di continuare.General action: try to fix the code before proceeding.
  2. Errore di configurazione/installazione: Microsoft.ServiceBus.Messaging.MessagingEntityNotFoundException, Microsoft.Azure.EventHubs.MessagingEntityNotFoundException, System.UnauthorizedAccessException.Setup/configuration error: Microsoft.ServiceBus.Messaging.MessagingEntityNotFoundException, Microsoft.Azure.EventHubs.MessagingEntityNotFoundException, System.UnauthorizedAccessException. Azione generale: controllare la configurazione e modificarla, se necessario.General action: review your configuration and change if necessary.
  3. Eccezioni temporanee: Microsoft.ServiceBus.Messaging.MessagingException, Microsoft.ServiceBus.Messaging.ServerBusyException, Microsoft.Azure.EventHubs.ServerBusyException, Microsoft.ServiceBus.Messaging.MessagingCommunicationException.Transient exceptions: 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.General action: retry the operation or notify users.
  4. Altre eccezioni: System.Transactions.TransactionException, System.TimeoutException, Microsoft.ServiceBus.Messaging.MessageLockLostException, Microsoft.ServiceBus.Messaging.SessionLockLostException.Other exceptions: System.Transactions.TransactionException, System.TimeoutException, Microsoft.ServiceBus.Messaging.MessageLockLostException, Microsoft.ServiceBus.Messaging.SessionLockLostException. Azione generale: specifica per il tipo di eccezione. Fare riferimento alla tabella nella sezione seguente.General action: specific to the exception type; please refer to the table in the following section.

Tipi di eccezioniException types

La tabella seguente elenca i tipi di eccezioni di messaggistica, ne riporta le possibili cause, e indica l'azione suggerita che è possibile eseguire.The following table lists messaging exception types, and their causes, and notes suggested action you can take.

Tipo di eccezioneException Type Descrizione/Causa/EsempiDescription/Cause/Examples Azione suggeritaSuggested Action Nota sulla ripetizione automatica/immediataNote on automatic/immediate retry
TimeoutExceptionTimeoutException Il server non ha risposto all'operazione richiesta entro l'intervallo di tempo specificato, controllato dalla proprietà OperationTimeout.The server did not respond to the requested operation within the specified time, which is controlled by OperationTimeout. Il server può aver completato l'operazione richiesta.The server may have completed the requested operation. L'eccezione può verificarsi a causa di ritardi a livello di rete o di infrastruttura.This can happen due to network or other infrastructure delays. Controllare lo stato del sistema per verificarne la coerenza e, se necessario, ripetere l'operazione.Check the system state for consistency and retry if necessary.
Vedere TimeoutException.See TimeoutException.
In alcuni casi può essere utile ripetere l'operazione; aggiungere al codice la logica di ripetizione dei tentativi.Retry might help in some cases; add retry logic to code.
InvalidOperationExceptionInvalidOperationException L'operazione richiesta dall'utente non è consentita nell'ambito del server o del servizio.The requested user operation is not allowed within the server or service. Per informazioni dettagliate, vedere il messaggio di eccezione.See the exception message for details. Ad esempio, Complete genera questa eccezione se il messaggio è stato ricevuto in modalità ReceiveAndDelete .For example, Complete generates this exception if the message was received in ReceiveAndDelete mode. Controllare il codice e la documentazione.Check the code and the documentation. Assicurarsi che l'operazione richiesta sia valida.Make sure the requested operation is valid. Ripetere l'operazione non serve.Retry will not help.
OperationCanceledExceptionOperationCanceledException È stato eseguito un tentativo di richiamare un'operazione su un oggetto già chiuso, interrotto o eliminato.An attempt is made to invoke an operation on an object that has already been closed, aborted or disposed. In alcuni casi rari, la transazione di ambiente è già stata eliminata.In rare cases, the ambient transaction is already disposed. Controllare il codice e assicurarsi che non richiami operazioni su un oggetto eliminato.Check the code and make sure it does not invoke operations on a disposed object. Ripetere l'operazione non serve.Retry will not help.
UnauthorizedAccessExceptionUnauthorizedAccessException L'oggetto TokenProvider non è riuscito ad acquisire un token oppure il token non è valido o non contiene le attestazioni necessarie per eseguire l'operazione.The TokenProvider object could not acquire a token, the token is invalid, or the token does not contain the claims required to perform the operation. Assicurarsi che il provider di token sia stato creato con i valori corretti.Make sure the token provider is created with the correct values. Controllare la configurazione del servizio di controllo di accesso.Check the configuration of the Access Control service. In alcuni casi può essere utile ripetere l'operazione; aggiungere al codice la logica di ripetizione dei tentativi.Retry might help in some cases; add retry logic to code.
ArgumentExceptionArgumentException
ArgumentNullExceptionArgumentNullException
ArgumentOutOfRangeExceptionArgumentOutOfRangeException
Uno o più argomenti forniti al metodo non sono validi.One or more arguments supplied to the method are invalid. L'URI fornito a NamespaceManager o Create contiene segmenti di percorso.The URI supplied to NamespaceManager or Create contains path segment(s). Lo schema URI fornito a NamespaceManager o Create non è valido.The URI scheme supplied to NamespaceManager or Create is invalid. Il valore della proprietà è maggiore di 32 KB.The property value is larger than 32KB. Controllare il codice chiamante e assicurarsi che gli argomenti siano corretti.Check the calling code and make sure the arguments are correct. Ripetere l'operazione non serve.Retry will not help.
Microsoft.ServiceBus.Messaging.MessagingEntityNotFoundExceptionMicrosoft.ServiceBus.Messaging.MessagingEntityNotFoundException
Microsoft.Azure.EventHubs.MessagingEntityNotFoundExceptionMicrosoft.Azure.EventHubs.MessagingEntityNotFoundException
L'entità associata all'operazione non esiste o è stata eliminata.Entity associated with the operation does not exist or it has been deleted. Assicurarsi che l'entità esista.Make sure the entity exists. Ripetere l'operazione non serve.Retry will not help.
MessagingCommunicationExceptionMessagingCommunicationException Il client non riesce a stabilire una connessione con Hub eventi.Client is not able to establish a connection to Event Hub. Assicurarsi che il nome host fornito sia corretto e l'host sia raggiungibile.Make sure the supplied host name is correct and the host is reachable. Se sono presenti problemi di connettività intermittente, può essere utile ripetere l'operazione.Retry might help if there are intermittent connectivity issues.
Microsoft.ServiceBus.Messaging.ServerBusyExceptionMicrosoft.ServiceBus.Messaging.ServerBusyException
Microsoft.Azure.EventHubs.ServerBusyExceptionMicrosoft.Azure.EventHubs.ServerBusyException
In questo momento il servizio non è in grado di elaborare la richiesta.Service is not able to process the request at this time. Il client può attendere per un certo periodo di tempo ed è quindi opportuno ripetere l'operazione.Client can wait for a period of time, then retry the operation.
Vedere ServerBusyException.See ServerBusyException.
Il client può riprovare dopo un determinato intervallo.Client may retry after certain interval. Se viene generata un'eccezione diversa, controllare il comportamento di ripetizione del tentativo della nuova eccezione.If a retry results in a different exception, check retry behavior of that exception.
MessagingExceptionMessagingException 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.Generic messaging exception that may be thrown in the following cases: An attempt is made to create a QueueClient using a name or path that belongs to a different entity type (for example, a topic). È stato eseguito un tentativo di inviare un messaggio di dimensioni superiori a 256 KB.An attempt is made to send a message larger than 256KB. Si è verificato un errore nel server o nel servizio durante l'elaborazione della richiesta.The server or service encountered an error during processing of the request. Per informazioni dettagliate, vedere il messaggio di eccezione.Please see the exception message for details. Si tratta in genere di un'eccezione temporanea.This is usually a transient exception. Controllare il codice e verificare che per il corpo del messaggio siano stati usati solo oggetti serializzabili (oppure usare un serializzatore personalizzato).Check the code and ensure that only serializable objects are used for the message body (or use a custom serializer). Consultare la documentazione per identificare i tipi di valori delle proprietà supportati e usare solo quelli.Check the documentation for the supported value types of the properties and only use supported types. Controllare la proprietà IsTransient .Check the IsTransient property. Se è true, è possibile ripetere l'operazione.If it is true, you can retry the operation. Il comportamento di ripetizione dei tentativi non è definito e ripetere l'operazione può non essere utile.Retry behavior is undefined and might not help.
MessagingEntityAlreadyExistsExceptionMessagingEntityAlreadyExistsException È stato eseguito un tentativo di creare un'entità con un nome già usato da un'altra entità dello stesso spazio dei nomi del servizio.Attempt to create an entity with a name that is already used by another entity in that service namespace. Eliminare l'entità esistente o scegliere un nome diverso per l'entità da creare.Delete the existing entity or choose a different name for the entity to be created. Ripetere l'operazione non serve.Retry will not help.
QuotaExceededExceptionQuotaExceededException L'entità di messaggistica ha raggiunto le dimensioni massime consentite.The messaging entity has reached its maximum allowable size. Questa situazione può verificarsi se a livello di gruppo di consumer è già stato aperto il numero massimo di ricevitori, ovvero 5.This can happen if the maximum number of receivers (which is 5) has already been opened on a per-consumer group level. Creare spazio nell'entità mediante la ricezione di messaggi dall'entità o dalle relative code secondarie.Create space in the entity by receiving messages from the entity or its sub-queues.
Vedere QuotaExceededExceptionSee QuotaExceededException
Se nel frattempo sono stati rimossi i messaggi, può essere utile ripetere l'operazione.Retry might help if messages have been removed in the meantime.
MessagingEntityDisabledExceptionMessagingEntityDisabledException È stata inoltrata una richiesta per un'operazione di runtime su un'entità disattivata.Request for a runtime operation on a disabled entity. Attivare l'entità.Activate the entity. Se nel frattempo l'entità è stata attivata, può essere utile ripetere l'operazione.Retry might help if the entity has been activated in the interim.
Microsoft.ServiceBus.Messaging.MessageSizeExceededExceptionMicrosoft.ServiceBus.Messaging.MessageSizeExceededException
Microsoft.Azure.EventHubs.MessageSizeExceededExceptionMicrosoft.Azure.EventHubs.MessageSizeExceededException
Un payload del messaggio supera il limite di 256 KB.A message payload exceeds the 256K limit. Il limite di 256 KB è la dimensione totale del messaggio, che può includere proprietà di sistema ed eventuali overhead .NET.Note that the 256k limit is the total message size, which can include system properties and any .NET overhead. Ridurre le dimensioni del payload del messaggio e quindi ripetere l'operazione.Reduce the size of the message payload, then retry the operation. Ripetere l'operazione non serve.Retry will not help.

QuotaExceededExceptionQuotaExceededException

QuotaExceededException indica che è stata superata la quota di un'entità specifica.QuotaExceededException indicates that a quota for a specific entity has been exceeded.

Questa situazione può verificarsi se a livello di gruppo di consumer è già stato aperto il numero massimo di (5) ricevitori.This can happen if the maximum number of receivers (5) has already been opened on a per-consumer group level.

Hub eventiEvent Hubs

Hub eventi ha un limite di 20 gruppi di utenti per Hub eventi.Event Hubs has a limit of 20 consumer groups per Event Hub. Quando si tenta di creare più gruppi, si riceve un'eccezione di tipo QuotaExceededException.When you attempt to create more, you receive a QuotaExceededException.

TimeoutExceptionTimeoutException

Un'eccezione di tipo TimeoutException indica che un'operazione avviata dall'utente richiede più tempo rispetto al timeout dell'operazione.A TimeoutException indicates that a user-initiated operation is taking longer than the operation timeout.

Per Hub eventi, il timeout è specificato come parte della stringa di connessione o tramite ServiceBusConnectionStringBuilder.For Event Hubs, the timeout is specified either as part of the connection string, or through ServiceBusConnectionStringBuilder. Il messaggio di errore stesso può variare, ma contiene sempre il valore di timeout specificato per l'operazione corrente.The error message itself might vary, but it always contains the timeout value specified for the current operation.

Cause comuniCommon causes

Per questo errore, esistono due cause comuni: una configurazione errata o un errore temporaneo del servizio.There are two common causes for this error: incorrect configuration, or a transient service error.

  1. Configurazione errata : il valore di timeout dell'operazione è troppo piccolo per la condizione operativa.Incorrect configuration The operation timeout might be too small for the operational condition. Il valore predefinito per il timeout dell'operazione dell'SDK client è 60 secondi.The default value for the operation timeout in the client SDK is 60 seconds. Verificare se il codice contiene un valore troppo piccolo.Check to see if your code has the value set to something too small. Si noti che la condizione relativa all'utilizzo della rete e della CPU può influire sul tempo necessario per il completamento di una determinata operazione, pertanto il timeout dell'operazione non deve essere impostato su un valore troppo piccolo.Note that the condition of the network and CPU usage can affect the time it takes for a particular operation to complete, so the operation timeout should not be set to a very small value.
  2. 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.Transient service error Sometimes the Event Hubs service can experience delays in processing requests; for example, during periods of high traffic. In questi casi, è possibile ritentare l'operazione dopo un ritardo fino a quando l'operazione ha esito positivo.In such cases, you can retry your operation after a delay, until the operation is successful. Se la stessa operazione ha ancora esito negativo dopo diversi tentativi, visitare il sito sullo stato dei servizi Azure per verificare se esistono casi noti di interruzioni del servizio.If the same operation still fails after multiple attempts, please visit the Azure service status site to see if there are any known service outages.

ServerBusyExceptionServerBusyException

Microsoft.ServiceBus.Messaging.ServerBusyException o Microsoft.Azure.EventHubs.ServerBusyException indicano che il server è sovraccarico.A Microsoft.ServiceBus.Messaging.ServerBusyException or Microsoft.Azure.EventHubs.ServerBusyException indicates that a server is overloaded. Esistono due codici di errore relativi a questa eccezione.There are two relevant error codes for this exception.

Codice di errore 50002Error code 50002

Questo errore può verificarsi per uno dei due motivi:This error can occur for one of two reasons:

  1. Il carico non viene distribuito uniformemente su tutte le partizioni nell'Hub eventi e una partizione raggiunge il limite dell'unità di velocità effettiva locale.The load is not evenly distributed across all partitions on the Event Hub, and one partition hits the local throughput unit limitation.

    Risoluzione: rivedere la strategia di distribuzione della partizione o provare con EventHubClient.Send(eventDataWithOutPartitionKey).Resolution: Revising the partition distribution strategy or trying EventHubClient.Send(eventDataWithOutPartitionKey) might help.

  2. Lo spazio dei nomi di Hub eventi non dispone di unità di velocità effettiva sufficienti (per conferma, è possibile controllare il pannello Metrica nel pannello dello spazio dei nomi di Hub eventi nel Portale di Azure).The Event Hubs namespace does not have sufficient throughput units (you can check the Metrics blade on Event Hubs namespace blade in the Azure portal to confirm). Si noti che il portale mostra le informazioni aggregate (1 minuto), ma viene misurata la velocità effettiva in tempo reale, quindi si tratta solo di una stima.Note that the portal shows aggregated (1 minute) information, but we measure the throughput in real time – so it is only an estimate.

    Risoluzione: aumentare le unità di velocità effettiva nello spazio dei nomi.Resolution: Increasing the throughput units on the namespace can help. È possibile farlo nel portale, nel pannello Scalabilità del pannello di spazio dei nomi di Hub eventi.You can do this on the portal, in the Scale blade of the Event Hubs namespace blade.

Codice errore 50001Error code 50001

Questo errore si verifica raramente.This error should rarely occur. 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.It happens when the container running code for your namespace is low on CPU – not more than a few seconds before the Event Hubs load balancer begins.

Passaggi successiviNext steps

Per ulteriori informazioni su Hub eventi visitare i collegamenti seguenti:You can learn more about Event Hubs by visiting the following links: