この記事では、Blob Storage をチェックポイント ストアとして使用する場合の問題について説明します。
チェックポイント ストアとしての Blob Storage の使用に関する問題
BLOB ストレージ アカウントをチェックポイント ストアとして使用すると、処理の遅延や、SDK の使用時にチェックポイントを作成できないなどの問題が発生する場合があります。
チェックポイント ストアとして Azure Blob Storage を使用する場合は、次の推奨事項に従います。
- コンシューマー グループごとに個別のコンテナーを使用します。 同じストレージ アカウントを使用できますが、各グループごとに 1 つのコンテナーを使用します。
- ストレージ アカウントを他の目的で使用しないでください。
- コンテナーを他の目的で使用しないでください。
- デプロイされたアプリケーションと同じリージョンにストレージ アカウントを作成します。 アプリケーションがオンプレミスの場合は、可能な中で最も近いリージョンを選択することを試みてください。
Azure portal の [ストレージ アカウント] ページの [Blob service] セクションで、次の設定が無効になっていることを確認してください。
- 階層型名前空間
- BLOB の論理的な削除
- バージョン管理
Azure Stack Hub での Blob Storage チェックポイント ストアの使用
Azure Blob Storage を、通常 Azure で使用できるバージョンとは異なるバージョンの Storage Blob SDK をサポートする環境のチェックポイント ストアとして使用している場合は、コードを使用して、Storage サービス API のバージョンを、その環境でサポートされている特定のバージョンに変更する必要があります。 たとえば、 Azure Stack Hub バージョン 2002 で Event Hubs を実行している場合、Storage サービスで使用できる最も高いバージョンはバージョン 2017-11-09 です。 この場合は、コードを使用して Storage サービス API バージョンを 2017-11-09 にターゲットにする必要があります。 特定の Storage API バージョンをターゲットにする方法の例については、GitHub の次のサンプルを参照してください。
- 。網
- Java。
- JavaScript または TypeScript
- Python - 同期、非同期
Azure Stack Hub でサポートされているバージョンを対象とせずに、Blob Storage をチェックポイント ストアとして使用する Event Hubs レシーバーを実行すると、次のエラー メッセージが表示されます。
The value for one of the HTTP headers is not in the correct format
Python のサンプル エラー メッセージ
Python の場合、azure.core.exceptions.HttpResponseErrorのエラーは、on_error(partition_context, error)のエラー ハンドラー EventHubConsumerClient.receive()に渡されます。 ただし、 receive() メソッドでは例外は発生しません。
print(error) は、次の例外情報を出力します。
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
ロガーは、次のような 2 つの警告をログに記録します。
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
次のステップ
パーティション分割とチェックポイント処理の詳細については、次の記事を参照してください。アプリケーションの複数のインスタンス間でパーティションの負荷を分散する