Řešení potíží s úložištěm kontrolních bodů

Tento článek popisuje problémy s používáním služby Blob Storage jako úložiště kontrolních bodů.

Problémy s používáním služby Blob Storage jako úložiště kontrolních bodů

Při použití účtu úložiště objektů blob jako úložiště kontrolních bodů, které souvisí se zpožděním při zpracování, nebo selháním při vytváření kontrolních bodů při použití sady SDK atd. může dojít k problémům.

Při používání služby Azure Blob Storage jako úložiště kontrolních bodů postupujte podle těchto doporučení:

  • Pro každou skupinu příjemců použijte samostatný kontejner. Můžete použít stejný účet úložiště, ale pro každou skupinu použít jeden kontejner.
  • Nepoužívejte kontejner pro nic jiného a nepoužívejte účet úložiště pro nic jiného.
  • Účet úložiště by měl být ve stejné oblasti jako nasazená aplikace. Pokud je aplikace místní, zkuste zvolit nejbližší možnou oblast.

Na stránce účtu úložiště na webu Azure Portal v části Blob Service se ujistěte, že jsou zakázaná následující nastavení.

  • Hierarchický obor názvů
  • Obnovitelné odstranění objektu blob
  • Vytváření verzí

Použití úložiště kontrolních bodů služby Blob Storage ve službě Azure Stack Hub

Pokud používáte Azure Blob Storage jako úložiště kontrolních bodů v prostředí, které podporuje jinou verzi sady SDK objektů blob služby Storage než ty, které jsou obvykle dostupné v Azure, musíte použít kód ke změně verze rozhraní API služby Storage na konkrétní verzi podporovanou v daném prostředí. Pokud například používáte Službu Event Hubs ve službě Azure Stack Hub verze 2002, je nejvyšší dostupná verze pro službu Storage verze 2017–11-09. V takovém případě musíte použít kód pro cílení na verzi rozhraní API služby Storage na verzi 2017-11-09. Příklad cílení na konkrétní verzi rozhraní API služby Storage najdete v těchto ukázkách na GitHubu:

Pokud spustíte příjemce služby Event Hubs, který používá službu Blob Storage jako úložiště kontrolních bodů bez cílení na verzi, kterou azure Stack Hub podporuje, zobrazí se následující chybová zpráva:

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

Ukázková chybová zpráva v Pythonu

Pro Python je chyba azure.core.exceptions.HttpResponseError předána obslužné rutině on_error(partition_context, error)EventHubConsumerClient.receive()chyby . receive() Metoda ale nevyvolá výjimku. print(error) vytiskne následující informace o výjimce:

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

Protokolovací protokol protokoluje dvě upozornění, jako jsou následující:

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

Další kroky

Informace o dělení a vytváření kontrolních bodů najdete v následujícím článku: Vyrovnávání zatížení oddílů napříč několika instancemi vaší aplikace