Résoudre des problèmes liés au magasin de points de contrôle

Cet article traite des problèmes liés à l’utilisation de Stockage Blob comme magasin de points de contrôle.

Problèmes liés à l’utilisation de Stockage Blob comme magasin de points de contrôle

Il est possible que vous rencontriez des problèmes lors de l’utilisation d’un compte de stockage d’objets blob en tant que magasin de points de contrôle liés à des retards de traitement, à des échecs de création de points de contrôle lors de l’utilisation du Kit de développement logiciel (SDK), etc.

Suivez les recommandations ci-dessous quand vous utilisez Stockage Blob Azure comme magasin de points de contrôle :

  • Utilisez un conteneur distinct pour chaque groupe de consommateurs. Vous pouvez utiliser le même compte de stockage, mais utiliser un conteneur par groupe.
  • N’utilisez pas le conteneur et le compte de stockage pour quoi que ce soit d’autre.
  • Le compte de stockage doit se trouver dans la même région que l’application déployée. Si l’application est locale, essayez de choisir la région la plus proche possible.

Sur la page Compte de stockage du Portail Azure, dans la section Service BLOB, vérifiez que les paramètres suivants sont désactivés.

  • Espace de noms hiérarchique
  • Suppression réversible de blob
  • Contrôle de version

Utilisation d’un magasin de points de contrôle Stockage Blob sur Azure Stack Hub

Si vous utilisez Stockage Blob Azure comme magasin de points de contrôle dans un environnement qui prend en charge une autre version du Kit de développement logiciel (SDK) Stockage Blob que ceux généralement disponibles sur Azure, vous devez utiliser du code pour remplacer la version de l’API Service de stockage par la version spécifique prise en charge par cet environnement. Par exemple, si vous exécutez Event Hubs sur Azure Stack Hub version 2002, la version la plus élevée disponible pour le service Stockage est la version 2017-11-09. Dans ce cas, vous devez utiliser du code pour cibler la version de l’API du service Stockage sur 2017-11-09. Pour obtenir un exemple sur la façon de cibler une version spécifique de l’API Stockage, consultez ces exemples sur GitHub :

Si vous exécutez un récepteur Event Hubs qui utilise Stockage Blob comme magasin de points de contrôle sans cibler la version prise en charge par Azure Stack Hub, vous recevez le message d’erreur suivant :

The value for one of the HTTP headers is not in the correct format

Exemple de message d’erreur en Python

Pour Python, une erreur azure.core.exceptions.HttpResponseError est transmise au gestionnaire d’erreurs on_error(partition_context, error) de EventHubConsumerClient.receive(). Toutefois, la méthode receive() ne lève pas d’exception. print(error) imprime les informations d’exception suivantes :

The value for one of the HTTP headers is not in the correct format.

RequestId:f048aee8-a90c-08ba-4ce1-e69dba759297
Time:2020-03-17T22:04:13.3559296Z
ErrorCode:InvalidHeaderValue
Error:None
HeaderName:x-ms-version
HeaderValue:2019-07-07

L’enregistreur d’événements consigne deux avertissements comme ceux-ci :

WARNING:azure.eventhub.extensions.checkpointstoreblobaio._blobstoragecsaio: 
An exception occurred during list_ownership for namespace '<namespace-name>.eventhub.<region>.azurestack.corp.microsoft.com' eventhub 'python-eh-test' consumer group '$Default'. 

Exception is HttpResponseError('The value for one of the HTTP headers is not in the correct format.\nRequestId:f048aee8-a90c-08ba-4ce1-e69dba759297\nTime:2020-03-17T22:04:13.3559296Z\nErrorCode:InvalidHeaderValue\nError:None\nHeaderName:x-ms-version\nHeaderValue:2019-07-07')

WARNING:azure.eventhub.aio._eventprocessor.event_processor:EventProcessor instance '26d84102-45b2-48a9-b7f4-da8916f68214' of eventhub 'python-eh-test' consumer group '$Default'. An error occurred while load-balancing and claiming ownership. 

The exception is HttpResponseError('The value for one of the HTTP headers is not in the correct format.\nRequestId:f048aee8-a90c-08ba-4ce1-e69dba759297\nTime:2020-03-17T22:04:13.3559296Z\nErrorCode:InvalidHeaderValue\nError:None\nHeaderName:x-ms-version\nHeaderValue:2019-07-07'). Retrying after 71.45254944090853 seconds

Étapes suivantes

Consultez les articles suivants pour en savoir plus sur le partitionnement et les points de contrôle : Équilibrer la charge de partition sur plusieurs instances de votre application