Memecahkan masalah penyimpanan titik pemeriksaan

Artikel ini membahas masalah dengan menggunakan Blob Storage sebagai penyimpanan titik pemeriksaan.

Masalah saat menggunakan Blob Storage sebagai penyimpanan titik pemeriksaan

Anda mungkin melihat masalah saat menggunakan akun penyimpanan blob sebagai penyimpanan titik pemeriksaan yang terkait dengan keterlambatan pemrosesan, atau kegagalan untuk membuat titik pemeriksaan saat menggunakan SDK, dll.

Ikuti rekomendasi ini saat menggunakan Azure Blob Storage sebagai penyimpanan titik pemeriksaan:

  • Gunakan kontainer terpisah untuk setiap grup konsumen. Anda dapat menggunakan akun penyimpanan yang sama, tetapi menggunakan satu kontainer per setiap grup.
  • Jangan gunakan kontainer untuk hal lain, dan jangan gunakan akun penyimpanan untuk hal lain.
  • Akun penyimpanan harus berada di wilayah yang sama dengan aplikasi yang disebarkan berada. Jika aplikasi lokal, coba pilih wilayah terdekat yang mungkin.

Pada halaman Akun penyimpanan di portal Azure, di bagian Blob service, pastikan bahwa pengaturan berikut dinonaktifkan.

  • Namespace hierarkis
  • Penghapusan sementara blob
  • Penerapan versi

Menggunakan penyimpanan titik pemeriksaan Blob Storage di Azure Stack Hub

Jika Anda menggunakan Azure Blob Storage sebagai penyimpanan titik pemeriksaan di lingkungan yang mendukung versi SDK Blob Penyimpanan yang berbeda dari yang biasanya tersedia di Azure, Anda perlu menggunakan kode untuk mengubah versi API layanan Storage ke versi tertentu yang didukung oleh lingkungan tersebut. Misalnya, jika Anda menjalankan Azure Event Hubs di Azure Stack Hub versi 2002, versi tertinggi yang tersedia untuk layanan Microsoft Azure Storage adalah versi 2017-11-09. Dalam hal ini, Anda perlu menggunakan kode untuk menargetkan versi API layanan Azure Storage ke 2017-11-09. Untuk contoh cara menargetkan versi Api Penyimpanan tertentu, lihat sampel ini di GitHub:

Jika Anda menjalankan penerima Azure Event Hubs yang menggunakan Blob Storage sebagai penyimpanan titik pemeriksaan tanpa menargetkan versi yang didukung Azure Stack Hub, Anda akan menerima pesan kesalahan berikut:

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

Contoh pesan kesalahan di Python

Untuk Python, kesalahan azure.core.exceptions.HttpResponseError diteruskan ke penangan kesalahan on_error(partition_context, error)dari EventHubConsumerClient.receive(). Namun, metode receive() ini tidak membuat pengecualian. print(error) mencetak informasi pengecualian berikut:

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

Pencatat mencatat dua peringatan seperti yang berikut ini:

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

Langkah berikutnya

Lihat artikel berikut ini pelajari tentang partisi dan titik pemeriksaan: Muatan partisi saldo di beberapa instans aplikasi Anda