Exceptions de messagerie Event Hubs : .NET (hérité)Event Hubs messaging exceptions - .NET (legacy)

Cette section liste les exceptions .NET générées par les API .NET Framework.This section lists the .NET exceptions generated by .NET Framework APIs.

Importante

Certaines des exceptions énumérées dans l’article s’appliquent uniquement à l’ancienne bibliothèque .NET Event Hubs.Some of the exceptions listed in the article apply only to legacy Event Hubs .NET library. Par exemple : les exceptions Microsoft.ServiceBus.*.For example: Microsoft.ServiceBus.* exceptions.

Pour plus d’informations sur l’exception EventHubsException déclenchée par la nouvelle bibliothèque .NET, consultez EventHubsException : .NET.For information about the EventHubsException raised by the new .NET library, see EventHubsException - .NET

Catégories d'exceptionsException categories

Les API .NET Event Hubs génèrent des exceptions qui peuvent être classées dans les catégories suivantes, accompagnées de l’action associée que vous pouvez mettre en place pour les résoudre :The Event Hubs .NET APIs generate exceptions that can fall into the following categories, along with the associated action you can take to try to fix them:

Types d'exceptionsException types

Le tableau suivant répertorie les types d'exceptions de la messagerie, leurs causes et les propositions d'actions que vous pouvez effectuer.The following table lists messaging exception types, and their causes, and notes suggested action you can take.

Type d’exceptionException Type Description/Cause/ExemplesDescription/Cause/Examples Action suggéréeSuggested Action Remarques sur la nouvelle tentative automatique/immédiateNote on automatic/immediate retry
TimeoutExceptionTimeoutException Le serveur n’a pas répondu à l’opération demandée dans le délai spécifié, qui est contrôlé par le paramètre OperationTimeout.The server didn't respond to the requested operation within the specified time, which is controlled by OperationTimeout. Le serveur peut avoir terminé l'opération demandée.The server may have completed the requested operation. Cette exception peut être levée à cause des délais observés sur le réseau ou une autre infrastructure.This exception can happen because of network or other infrastructure delays. Vérifiez la cohérence de l'état du système et réessayez si nécessaire.Check the system state for consistency and retry if necessary.
Consultez TimeoutException.See TimeoutException.
Dans certains cas, l'exécution d'une nouvelle tentative peut aider ; ajouter une logique de nouvelle tentative au code.Retry might help in some cases; add retry logic to code.
InvalidOperationExceptionInvalidOperationException L’opération utilisateur demandée n’est pas autorisée sur le serveur ou le service.The requested user operation isn't allowed within the server or service. Consultez le message de l'exception pour obtenir plus d'informations.See the exception message for details. Par exemple, le paramètre Complete génère cette exception si le message a été reçu en mode ReceiveAndDelete .For example, Complete generates this exception if the message was received in ReceiveAndDelete mode. Vérifiez le code et consultez la documentation.Check the code and the documentation. Assurez-vous que l'opération demandée est valide.Make sure the requested operation is valid. Une nouvelle tentative est inutile.Retry won't help.
OperationCanceledExceptionOperationCanceledException Une tentative est effectuée pour appeler une opération sur un objet qui a déjà été fermé, abandonné ou supprimé.An attempt is made to invoke an operation on an object that has already been closed, aborted, or disposed. Dans de rares cas, la transaction ambiante est déjà supprimée.In rare cases, the ambient transaction is already disposed. Vérifiez le code et veillez à ce qu’il n’appelle pas d’opérations sur un objet supprimé.Check the code and make sure it doesn't invoke operations on a disposed object. Une nouvelle tentative est inutile.Retry won't help.
UnauthorizedAccessExceptionUnauthorizedAccessException L’objet TokenProvider n’a pas pu obtenir de jeton, le jeton n’est pas valide ou le jeton ne contient pas les revendications nécessaires pour exécuter l’opération.The TokenProvider object couldn't acquire a token, the token is invalid, or the token doesn't contain the claims required to do the operation. Assurez-vous que le fournisseur de jetons est créé avec les valeurs correctes.Make sure the token provider is created with the correct values. Vérifiez la configuration du service ACS (Access Control Service).Check the configuration of the Access Control Service. Dans certains cas, l'exécution d'une nouvelle tentative peut aider ; ajouter une logique de nouvelle tentative au code.Retry might help in some cases; add retry logic to code.
ArgumentExceptionArgumentException
ArgumentNullExceptionArgumentNullException
ArgumentOutOfRangeExceptionArgumentOutOfRangeException
Un ou plusieurs des arguments fournis à la méthode ne sont pas valides.One or more arguments supplied to the method are invalid. L’URI fourni à NamespaceManager ou Ceate contient un ou plusieurs segments de chemin d’accès.The URI supplied to NamespaceManager or Create contains path segment(s). Le schéma d’URI fourni à NamespaceManager ou Ceate n’est pas valide.The URI scheme supplied to NamespaceManager or Create is invalid. La valeur de la propriété est supérieure à 32 ko.The property value is larger than 32 KB. Vérifiez le code appelant et assurez-vous que les arguments sont corrects.Check the calling code and make sure the arguments are correct. Une nouvelle tentative ne sera pas bénéfique.Retry will not help.
Microsoft.ServiceBus.Messaging MessagingEntityNotFoundExceptionMicrosoft.ServiceBus.Messaging MessagingEntityNotFoundException

Microsoft.Azure.EventHubs MessagingEntityNotFoundExceptionMicrosoft.Azure.EventHubs MessagingEntityNotFoundException
L'entité associée à l'opération n'existe pas ou a été supprimée.Entity associated with the operation does not exist or it has been deleted. Assurez-vous que l'entité existe.Make sure the entity exists. Une nouvelle tentative ne sera pas bénéfique.Retry will not help.
MessagingCommunicationExceptionMessagingCommunicationException Le client ne peut pas établir de connexion à Event Hub.Client is not able to establish a connection to Event Hub. Assurez-vous que le nom d'hôte fourni est correct et que l'hôte est accessible.Make sure the supplied host name is correct and the host is reachable. Une nouvelle tentative peut aider en cas de problèmes de connectivité intermittents.Retry might help if there are intermittent connectivity issues.
Microsoft.ServiceBus.Messaging ServerBusyException Microsoft.ServiceBus.Messaging ServerBusyException

Microsoft.Azure.EventHubs ServerBusyExceptionMicrosoft.Azure.EventHubs ServerBusyException
Le service n'est pas en mesure de traiter la demande pour l'instant.Service is not able to process the request at this time. Le client peut attendre pendant une période de temps, puis recommencer l'opération.Client can wait for a period of time, then retry the operation.
Consultez ServerBusyException.See ServerBusyException.
Le client peut réessayer après un certain temps.Client may retry after certain interval. Si une nouvelle tentative provoque une exception différente, vérifiez le comportement de nouvelle tentative de cette exception.If a retry results in a different exception, check retry behavior of that exception.
MessagingExceptionMessagingException Exception de messagerie générique qui peut être levée dans les cas suivants : une tentative est effectuée pour créer un QueueClient à l’aide d’un nom ou d’un chemin d’accès qui appartient à un autre type d’entité (par exemple, une rubrique).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). Une tentative est effectuée pour envoyer un message de taille supérieure à 1 Mo.An attempt is made to send a message larger than 1 MB. Le serveur ou le service a rencontré une erreur lors du traitement de la demande.The server or service encountered an error during processing of the request. Consultez le message de l'exception pour obtenir plus d'informations.See the exception message for details. Cette exception est généralement temporaire.This exception is usually a transient exception. Vérifiez le code et assurez-vous que seuls les objets sérialisables sont utilisés dans le corps du message (ou utilisez un sérialiseur personnalisé).Check the code and ensure that only serializable objects are used for the message body (or use a custom serializer). Consultez la documentation pour connaître les types de valeurs des propriétés pris en charge et utilisez uniquement les types pris en charge.Check the documentation for the supported value types of the properties and only use supported types. Vérifiez la propriété IsTransient .Check the IsTransient property. Si sa valeur est true, vous pouvez réessayer d’effectuer l’opération.If it is true, you can retry the operation. Le comportement de la nouvelle tentative n'est pas défini et peut ne pas être utile.Retry behavior is undefined and might not help.
MessagingEntityAlreadyExistsExceptionMessagingEntityAlreadyExistsException Tentative de création d'une entité dont le nom est déjà utilisé par une autre entité de l'espace de noms de ce service.Attempt to create an entity with a name that is already used by another entity in that service namespace. Supprimez l'entité existante ou choisissez un autre nom pour l'entité à créer.Delete the existing entity or choose a different name for the entity to be created. Une nouvelle tentative ne sera pas bénéfique.Retry will not help.
QuotaExceededExceptionQuotaExceededException L'entité de messagerie a atteint sa taille maximale autorisée.The messaging entity has reached its maximum allowable size. Cette exception peut être levée si le nombre maximal de destinataires (c’est-à-dire 5) a déjà été ouvert sur un niveau de regroupement par consommateur.This exception can happen if the maximum number of receivers (which is 5) has already been opened on a per-consumer group level. Créez de l’espace dans l’entité en recevant des messages à partir de l’entité ou de ses files d’attente secondaires.Create space in the entity by receiving messages from the entity or its subqueues.
Consultez QuotaExceededException.See QuotaExceededException
Une nouvelle tentative peut aider si des messages ont été supprimés entre-temps.Retry might help if messages have been removed in the meantime.
MessagingEntityDisabledExceptionMessagingEntityDisabledException Demande d'une opération d'exécution sur une entité désactivée.Request for a runtime operation on a disabled entity. Activez l'entité.Activate the entity. Une nouvelle tentative peut aider si l'entité a été activée entre-temps.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
Une charge utile de message dépasse la limite de 1 Mo.A message payload exceeds the 1-MB limit. Cette limite de 1 Mo correspond à l’intégralité du message, qui peut inclure des propriétés système et une surcharge .NET.This 1-MB limit is for the total message, which can include system properties and any .NET overhead. Réduisez la taille de la charge utile de message, puis recommencez l'opération.Reduce the size of the message payload, then retry the operation. Une nouvelle tentative ne sera pas bénéfique.Retry will not help.

QuotaExceededExceptionQuotaExceededException

QuotaExceededException indique que le quota d’une entité spécifique a été dépassé.QuotaExceededException indicates that a quota for a specific entity has been exceeded.

Cette exception peut être levée si le nombre maximal de destinataires (5) a déjà été ouvert sur un niveau de regroupement par consommateur.This exception can happen if the maximum number of receivers (5) has already been opened on a per-consumer group level.

Event HubsEvent Hubs

Event Hubs a une limite de 20 groupes de consommateurs par Event Hub.Event Hubs has a limit of 20 consumer groups per Event Hub. Lorsque vous essayez d’en créer plus, vous recevez une QuotaExceededException.When you attempt to create more, you receive a QuotaExceededException.

TimeoutExceptionTimeoutException

Une TimeoutException indique qu’une opération lancée par l’utilisateur dépasse le délai d’expiration de l’opération.A TimeoutException indicates that a user-initiated operation is taking longer than the operation timeout.

Pour Event Hubs, le délai d'attente est spécifié au sein de la chaîne de connexion ou par ServiceBusConnectionStringBuilder.For Event Hubs, the timeout is specified either as part of the connection string, or through ServiceBusConnectionStringBuilder. Le message d'erreur peut varier, mais il contient toujours la valeur du délai d'attente spécifiée pour l'opération en cours.The error message itself might vary, but it always contains the timeout value specified for the current operation.

Des expirations de délai sont à prévoir pendant ou entre les opérations de maintenance telles que les mises à jour de service Event Hubs (ou) les mises à jour de système d’exploitation sur les ressources qui exécutent le service.Timeouts are expected to happen during or in-between maintenance operations such as Event Hubs service updates (or) OS updates on resources that run the service. Pendant les mises à jour du système d’exploitation, les entités sont déplacées et les nœuds sont mis à jour ou redémarrés, ce qui peut entraîner des expirations de délai.During OS updates, entities are moved around and nodes are updated or rebooted, which can cause timeouts. Pour plus d’informations sur les contrats de niveau de service (SLA) pour le service Azure Event Hubs, consultez les SLA pour Event Hubs.For service level agreement (SLA) details for the Azure Event Hubs service, see SLA for Event Hubs.

Causes courantesCommon causes

Il existe deux causes communes pour cette erreur : une configuration incorrecte ou une erreur de service temporaire.There are two common causes for this error: incorrect configuration, or a transient service error.

  • Configuration incorrecte Le délai d’expiration de l’opération est peut-être trop court pour un bon fonctionnement.Incorrect configuration The operation timeout might be too small for the operational condition. La valeur par défaut du délai d'expiration de l'opération dans le Kit de développement logiciel (SDK) client est de 60 secondes.The default value for the operation timeout in the client SDK is 60 seconds. Vérifiez si votre code définit une valeur trop petite.Check to see if your code has the value set to something too small. Selon la condition du réseau et l’utilisation du processeur, la réalisation d’une opération peut prendre plus ou moins de temps. Le délai d’expiration de l’opération ne doit donc pas être défini à une valeur trop basse.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 small value.
  • Erreur de service temporaire Parfois, le service Event Hubs peut rencontrer des retards de traitement des requêtes, par exemple pendant les périodes de trafic élevé.Transient service error Sometimes the Event Hubs service can experience delays in processing requests; for example, during periods of high traffic. Dans ce cas, vous pouvez réessayer l'opération après un certain délai, jusqu'à ce que l'opération réussisse.In such cases, you can retry your operation after a delay, until the operation is successful. Si la même opération échoue encore après plusieurs tentatives, consultez le Site d’état des services Azure pour voir s’il existe des interruptions de service connues.If the same operation still fails after multiple attempts, visit the Azure service status site to see if there are any known service outages.

ServerBusyExceptionServerBusyException

Une exception Microsoft.ServiceBus.Messaging.ServerBusyException ou Microsoft.Azure.EventHubs.ServerBusyException indique qu’un serveur est surchargé.A Microsoft.ServiceBus.Messaging.ServerBusyException or Microsoft.Azure.EventHubs.ServerBusyException indicates that a server is overloaded. Il existe deux codes d’erreur pertinents pour cette exception.There are two relevant error codes for this exception.

Code d’erreur 50002Error code 50002

Cette erreur peut se produire pour deux raisons :This error can occur for one of two reasons:

  • La charge n’est pas répartie de manière égale entre toutes les partitions du hub d’événements et une partition atteint la limite d’unité de débit locale.The load isn't evenly distributed across all partitions on the event hub, and one partition hits the local throughput unit limitation.

    Résolution : Passez en revue la stratégie de distribution de partition ou essayez EventHubClient.Send(eventDataWithOutPartitionKey).Resolution: Revising the partition distribution strategy or trying EventHubClient.Send(eventDataWithOutPartitionKey) might help.

  • L’espace de noms Event Hubs n’a pas suffisamment d’unités de débit (pour le vérifier, consultez l’écran Métriques dans la fenêtre de l’espace de noms Event Hubs du portail Azure).The Event Hubs namespace doesn't have sufficient throughput units (you can check the Metrics screen in the Event Hubs namespace window in the Azure portal to confirm). Le portail affiche des informations agrégées (1 minute), mais nous mesurons le débit en temps réel. Cette valeur n’est donc qu’une estimation.The portal shows aggregated (1 minute) information, but we measure the throughput in real time – so it's only an estimate.

    Résolution : Augmentez les unités de débit sur l’espace de noms.Resolution: Increasing the throughput units on the namespace can help.

    Vous pouvez configurer des unités de débit sur la page Mettre à l’échelle ou la page Vue d’ensemble de votre page Espace de noms Event Hubs dans le Portail Azure.You can configure throughput units on the Scale page or Overview page of your Event Hubs namespace page in the Azure portal. Vous pouvez également utiliser Majoration automatique, qui augmente automatiquement la taille des instances en augmentant le nombre d’unités de débit pour répondre aux besoins d’utilisation.Or, you can use Auto-inflate, which automatically scales up by increasing the number of throughput units, to meet usage needs.

    Les unités de débit s’appliquent à tous les Event Hubs d’un espace de noms Event Hubs.Throughput units (TUs) apply to all event hubs in an Event Hubs namespace. Cela signifie que vous achetez des unités de débit au niveau de l’espace de noms et que vous les partagez entre les Event Hubs sous cet espace de noms.It means that you purchase TUs at the namespace level and are shared among the event hubs under that namespace. Chaque TU donne accès à l’espace de noms pour les fonctionnalités suivantes :Each TU entitles the namespace to the following capabilities:

    • Jusqu’à 1 Mo par seconde d’événements d’entrée (événements envoyés à un concentrateur d’événements), mais pas plus de 1 000 événements d’entrée, opérations de gestion ou appels d’API de contrôle par seconde.Up to 1 MB per second of ingress events (events sent into an event hub), but no more than 1000 ingress events, management operations, or control API calls per second.
    • Jusqu’à 2 Mo par seconde d’événements de sortie (événements consommés à partir d’un hub d’événements), mais pas plus de 4 096 événements de sortie.Up to 2 MB per second of egress events (events consumed from an event hub), but no more than 4096 egress events.
    • Jusqu’à 84 Go de stockage d’événements (suffisant pour la période de rétention de 24 heures par défaut).Up to 84 GB of event storage (enough for the default 24-hour retention period).

    Sur la page Vue d’ensemble, dans la section Afficher les métriques, accédez à l’onglet Débit. Sélectionnez le graphique pour l’ouvrir dans une fenêtre plus grande avec des intervalles de 1 minute sur l’axe X.On the Overview page, in the Show metrics section, switch to the Throughput tab. Select the chart to open it in a larger window with 1-minute intervals on the x-axis. Examinez les valeurs de pic et divisez-les par 60 pour obtenir les octets entrants/s ou sortants/s.Look at the peak values and divide them by 60 to get incoming bytes/second or outgoing bytes/second. Utilisez une approche similaire pour calculer le nombre de demandes par seconde aux heures de pointe sous l’onglet Requêtes.Use similar approach to calculate number of requests per second at peak times on the Requests tab.

    Si vous constatez une valeur supérieure au nombre limite d’unités * (1 Mo par seconde pour les entrées ou 1 000 requêtes pour les entrées/seconde, 2 Mo par seconde pour la sortie), augmentez le nombre d’unités à l’aide de la page Mettre à l’échelle (dans le menu gauche) d’un espace de noms Event Hubs pour une mise à l’échelle manuelle supérieure ou pour utiliser la fonctionnalité Majoration automatique d’Event Hubs.If you see values higher than number of TUs * limits (1 MB per second for ingress or 1000 requests for ingress/second, 2 MB per second for egress), increase the number of TUs by using the Scale (on the left menu) page of an Event Hubs namespace to manually scale higher or to use the Auto-inflate feature of Event Hubs. Notez que la majoration automatique ne peut atteindre qu’au maximum 20 unités.Note that auto-Inflate can only increase up to 20 TUS. Pour qu’elle atteigne exactement 40 unités, envoyez une demande de support.To raise it to exactly 40 TUs, submit a support request.

Code d’erreur 50001Error code 50001

Cette erreur survient rarement.This error should rarely occur. Elle se présente lorsque le conteneur exécutant le code pour votre espace de noms n’a pas suffisamment de ressources d’UC ; pas plus de quelques secondes avant que l’équilibrage de charge des Event Hubs commence.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.

Résolution : Limiter le nombre d’appels à la méthode GetRuntimeInformation.Resolution: Limit on calls to the GetRuntimeInformation method. Azure Event Hubs prend en charge jusqu’à 50 appels par seconde à l’instance GetRuntimeInfo par seconde.Azure Event Hubs supports up to 50 calls per second to the GetRuntimeInfo per second. Une fois la limite atteinte; vous pouvez recevoir une exception semblable à ce qui suit :You may receive an exception similar to the following one once the limit is reached:

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 : 50001. Please wait 10 seconds and try again.

Étapes suivantesNext steps

Vous pouvez en apprendre plus sur Event Hubs en consultant les liens suivants :You can learn more about Event Hubs by visiting the following links: