Anda dapat memperbarui grup konsumen Google Cloud Managed Service untuk Apache Kafka guna mengubah offset untuk daftar partisi topik. Hal ini memungkinkan Anda mengontrol pesan yang diterima konsumen dalam grup.
Untuk memperbarui grup konsumen, Anda dapat menggunakan Google Cloud CLI, library klien, Managed Kafka API, atau Apache Kafka API open source. Konsol tidak didukung untuk mengedit grup konsumen. Google Cloud
Sebelum memulai
Untuk memperbarui grup konsumen, pastikan terlebih dahulu bahwa grup tersebut tidak aktif menggunakan pesan.
Grup konsumen akan otomatis dihapus oleh Kafka jika tidak pernah menggunakan pesan apa pun, atau saat offset terakhir yang di-commit telah habis masa berlakunya setelah offsets.retention.minutes.
Ikuti langkah-langkah berikut sebelum memperbarui grup konsumen:
Kirim beberapa pesan ke topik tempat grup konsumen Anda membaca pesan.
Mulai grup konsumen Anda untuk memproses beberapa pesan.
Hentikan semua konsumen Anda agar tidak menggunakan pesan. Untuk menghentikan konsumen, tekan Control+C.
Untuk mengetahui informasi selengkapnya tentang cara mengirim dan menggunakan pesan, lihat Membuat dan menggunakan pesan dengan alat command line Kafka.
Peran dan izin yang diperlukan untuk memperbarui grup konsumen
Untuk mendapatkan izin yang diperlukan untuk mengedit grup konsumen, minta administrator Anda untuk memberi Anda peran IAM Managed Kafka Consumer Group Editor (roles/managedkafka.consumerGroupEditor) di project Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran yang telah ditentukan ini berisi izin yang diperlukan untuk mengedit grup konsumen Anda. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengedit grup konsumen Anda:
-
Memperbarui grup konsumen:
managedkafka.consumerGroups.update
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Untuk mengetahui informasi selengkapnya tentang peran Managed Kafka Consumer Group Editor, lihat Peran bawaan Managed Service untuk Apache Kafka.
Memberikan akses BACA ke agen layanan
Untuk memperbarui offset grup konsumen, agen layanan memerlukan akses ke operasi BACA pada resource topik dan grup konsumen. Akses ini dikonfigurasi dengan ACL Apache Kafka.
Jika Anda belum mengonfigurasi ACL Apache Kafka untuk grup konsumen dan topiknya dalam cluster, agen layanan akan memiliki akses ambient ke resource ini. Anda dapat melewati bagian ini.
Jika ACL Apache Kafka dikonfigurasi untuk grup konsumen dan topiknya dalam cluster, agen layanan memerlukan akses ACL eksplisit untuk operasi BACA bagi kedua resource. Untuk melakukannya, tambahkan entri ACL yang memberikan akses agen layanan ke operasi BACA pada grup konsumen dan topik yang relevan. Ikuti langkah-langkah berikut:
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init Jalankan perintah
gcloud managed-kafka acls add-acl-entry:gcloud managed-kafka acls add-acl-entry CONSUMER_GROUP_ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --principal=User:__AUTH_TOKEN__service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \ --operation=READ --permission-type=ALLOW --host=* gcloud managed-kafka acls add-acl-entry TOPIC_ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --principal=User:__AUTH_TOKEN__service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \ --operation=READ --permission-type=ALLOW --host=*
Ganti kode berikut:
CONSUMER_GROUP_ACL_ID(wajib): ID unik resource ACL Managed Service untuk Apache Kafka tempat Anda ingin menambahkan entri ACL untuk grup konsumen. Untuk menerapkan akses ke semua grup konsumen, gunakan `allConsumerGroups`. Atau, untuk grup konsumen tertentu, gunakan `consumerGroup/CONSUMER_GROUP_NAME`.TOPIC_ACL_ID(wajib): ID unik resource ACL Managed Service untuk Apache Kafka tempat Anda ingin menambahkan entri ACL untuk topik. Untuk menerapkan akses ke semua topik, gunakan `allTopics`. Atau, untuk topik tertentu, gunakan `topic/TOPIC_NAME`.CLUSTER_ID(wajib): ID cluster yang berisi resource ACL.LOCATION(wajib): region tempat cluster berada. Lihat Lokasi yang didukung.PROJECT_NUMBER(wajib): nomor project tempat cluster berada. Nomor ini digunakan untuk membuat nama utama agen layanan untuk entri ACL.
Untuk mengetahui informasi selengkapnya tentang cara menambahkan entri ACL, lihat Menambahkan entri ACL.
Memperbarui grup konsumen
Pastikan Anda telah menyelesaikan langkah-langkah di bagian Sebelum memulai.
Untuk memperbarui grup konsumen, ikuti langkah-langkah berikut:
gcloud
-
Di konsol, aktifkan Cloud Shell. Google Cloud
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
Jalankan perintah
gcloud managed-kafka consumer-groups update:gcloud managed-kafka consumer-groups update CONSUMER_GROUP_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --topics-file=TOPICS_FILE
Ganti kode berikut:
-
CLUSTER_ID: ID atau nama cluster.
-
LOCATION: Lokasi cluster.
-
CONSUMER_GROUP_ID: ID atau nama grup konsumen.
-
TOPICS_FILE: Setelan ini menentukan lokasi file yang berisi konfigurasi topik yang akan diperbarui untuk grup konsumen. File dapat berformat JSON atau YAML. File dapat berupa jalur file atau langsung menyertakan konten JSON atau YAML.
File topik menggunakan struktur JSON untuk merepresentasikan peta topik
ConsumerGroup, dalam bentuk{ topicName1: {ConsumerPartitionMetadata}, topicName2:{ConsumerPartitionMetadata}}. Untuk setiap topik,ConsumerPartitionMetadatamemberikan offset dan metadata untuk setiap partisi.Untuk menetapkan offset untuk satu partisi (partisi 0) dalam topik bernama
topic1ke 10, konfigurasi JSON akan terlihat seperti:{"topic1": {"partitions": { 0 : { "offset": 10, "metadata": ""}}}}Berikut adalah contoh konten file
topics.json:{ "projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME/TOPICS/TOPIC_NAME": { "partitions": { "1": { "offset": "1", "metadata": "metadata" }, "2": { "offset": "1", "metadata": "metadata" } } }, "projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME/TOPICS/OTHER_TOPIC_NAME": { "partitions": { "1": { "offset": "1", "metadata": "metadata" } } } }
-
TOPIC_PATH: Saat menentukan topik dalam file JSON atau YAML, sertakan jalur topik lengkap yang dapat diperoleh dengan menjalankan perintah
gcloud managed-kafak topics describedan dalam formatprojects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_ID/topics/topic. .
-