Sie können eine Google Cloud Managed Service for Apache Kafka-Consumergruppe aktualisieren, um die Offsets für eine Liste von Themenpartitionen zu ändern. So können Sie steuern, welche Nachrichten die Consumer in der Gruppe erhalten.
Sie können eine Consumer-Gruppe mit der Google Cloud CLI, der Clientbibliothek, der Managed Kafka API oder den Open-Source-Apache Kafka APIs aktualisieren. Die Google Cloud Console wird nicht zum Bearbeiten einer Verbrauchergruppe unterstützt.
Hinweis
Wenn Sie eine Nutzergruppe aktualisieren möchten, muss sie zuerst inaktiv sein.
Eine Consumer-Gruppe wird von Kafka automatisch gelöscht, wenn sie noch nie Nachrichten verarbeitet hat oder wenn der letzte übergebene Offset nach offsets.retention.minutes abgelaufen ist.
Führen Sie diese Schritte aus, bevor Sie eine Verbrauchergruppe aktualisieren:
Senden Sie einige Nachrichten an das Thema, aus dem Ihre Nutzergruppe Nachrichten liest.
Starten Sie Ihre Consumer-Gruppe, um einige Nachrichten zu verarbeiten.
Verhindern, dass alle Ihre Consumer Nachrichten verarbeiten. Drücken Sie Strg+C, um einen Consumer zu beenden.
Weitere Informationen zum Senden und Empfangen von Nachrichten finden Sie unter Nachrichten mit den Kafka-Befehlszeilentools senden und empfangen.
Erforderliche Rollen und Berechtigungen zum Aktualisieren einer Nutzergruppe
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Managed Kafka Consumer Group Editor (roles/managedkafka.consumerGroupEditor) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bearbeiten Ihrer Consumer-Gruppen benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Bearbeiten Ihrer Verbrauchergruppen erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Bearbeiten Ihrer Verbrauchergruppen erforderlich:
-
Verbrauchergruppen aktualisieren:
managedkafka.consumerGroups.update
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Dienst-Agenten LESEzugriff gewähren
Damit der Dienst-Agent die Offsets der Verbrauchergruppe aktualisieren kann, benötigt er Zugriff auf den READ-Vorgang für die Ressourcen des Themas und der Verbrauchergruppe. Dieser Zugriff wird mit Apache Kafka-ACLs konfiguriert.
Wenn Sie keine Apache Kafka-ACLs für die Consumer-Gruppe und das zugehörige Thema im Cluster konfiguriert haben, hat der Dienst-Agent Zugriff auf diese Ressourcen. Sie können diesen Abschnitt überspringen.
Wenn Apache Kafka-ACLs für die Consumer-Gruppe und das zugehörige Thema im Cluster konfiguriert sind, benötigt der Dienst-Agent expliziten ACL-Zugriff für den READ-Vorgang für beide Ressourcen. Fügen Sie dazu ACL-Einträge hinzu, die dem Dienst-Agent Zugriff auf den READ-Vorgang für die entsprechende Verbrauchergruppe und das entsprechende Thema gewähren. Gehen Sie so vor:
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init Führen Sie den Befehl
gcloud managed-kafka acls add-acl-entryaus: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=*
Ersetzen Sie Folgendes:
CONSUMER_GROUP_ACL_ID(erforderlich): die eindeutige ID der Managed Service for Apache Kafka-ACL-Ressource, der Sie den ACL-Eintrag für die Consumer-Gruppe hinzufügen möchten. Wenn Sie den Zugriff auf alle Nutzergruppen anwenden möchten, verwenden Sie `allConsumerGroups`. Für eine bestimmte Nutzergruppe verwenden Sie `consumerGroup/CONSUMER_GROUP_NAME`.TOPIC_ACL_ID(erforderlich): die eindeutige ID der ACL-Ressource von Managed Service for Apache Kafka, der Sie den ACL-Eintrag für das Thema hinzufügen möchten. Wenn Sie den Zugriff auf alle Themen anwenden möchten, verwenden Sie `allTopics`. Für ein bestimmtes Thema verwenden Sie `topic/TOPIC_NAME`.CLUSTER_ID(erforderlich): die ID des Clusters, der die ACL-Ressource enthält.LOCATION(erforderlich): Die Region, in der sich der Cluster befindet. Unterstützte StandortePROJECT_NUMBER(erforderlich): Die Projektnummer des Projekts, in dem sich der Cluster befindet. Damit wird der Prinzipalname des Dienst-Agents für den ACL-Eintrag erstellt.
Weitere Informationen zum Hinzufügen eines ACL-Eintrags finden Sie unter ACL-Eintrag hinzufügen.
Verbrauchergruppe aktualisieren
Führen Sie die Schritte im Abschnitt Vorbereitung aus.
So aktualisieren Sie eine Verbrauchergruppe:
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Führen Sie den Befehl
gcloud managed-kafka consumer-groups updateaus:gcloud managed-kafka consumer-groups update CONSUMER_GROUP_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --topics-file=TOPICS_FILE
Ersetzen Sie Folgendes:
-
CLUSTER_ID: Die ID oder der Name des Clusters.
-
LOCATION: Der Standort des Clusters.
-
CONSUMER_GROUP_ID: Die ID oder der Name der Nutzergruppe.
-
TOPICS_FILE: Mit dieser Einstellung wird der Speicherort der Datei angegeben, die die Konfiguration der Themen enthält, die für die Verbrauchergruppe aktualisiert werden sollen. Die Datei kann im JSON- oder YAML-Format vorliegen. Es kann sich um einen Dateipfad handeln oder die JSON- oder YAML-Inhalte können direkt enthalten sein.
In der Themen-Datei wird eine JSON-Struktur verwendet, um eine
ConsumerGroup-Themenübersicht im Format{ topicName1: {ConsumerPartitionMetadata}, topicName2:{ConsumerPartitionMetadata}}darzustellen. Für jedes Thema stelltConsumerPartitionMetadataden Offset und die Metadaten für jede Partition bereit.Wenn Sie den Offset für eine einzelne Partition (Partition 0) in einem Thema mit dem Namen
topic1auf 10 festlegen möchten, sieht die JSON-Konfiguration so aus:{"topic1": {"partitions": { 0 : { "offset": 10, "metadata": ""}}}}Im Folgenden finden Sie ein Beispiel für den Inhalt einer
topics.json-Datei:{ "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: Wenn Sie Themen in einer JSON- oder YAML-Datei angeben, geben Sie den vollständigen Themenpfad an, den Sie durch Ausführen des Befehls
gcloud managed-kafak topics describeerhalten können. Der Pfad hat das Formatprojects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_ID/topics/topic. .
-