מחיקת קבוצת צרכנים בשירות מנוהל של Google Cloud ל-Apache Kafka

מחיקה של קבוצת צרכנים מסירה את קבוצת הצרכנים מהאשכול של השירות המנוהל ל-Apache Kafka.

כדי למחוק קבוצת צרכנים, אפשר להשתמש במסוף Google Cloud , ב-Google Cloud CLI, בספריות הלקוח, ב-Managed Kafka API או בממשקי ה-API של Apache Kafka בקוד פתוח.

תפקידים והרשאות שנדרשים למחיקת קבוצת צרכנים

כדי לקבל את ההרשאות שנדרשות למחיקת קבוצות צרכנים, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Managed Kafka Consumer Group Editor (roles/managedkafka.consumerGroupEditor) בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד המוגדר מראש הזה כולל את ההרשאות שנדרשות למחיקת קבוצות צרכנים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי למחוק את קבוצות הצרכנים, נדרשות ההרשאות הבאות:

  • מחיקת קבוצות צרכנים: managedkafka.consumerGroups.delete

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

מחיקת קבוצת צרכנים

כשמוחקים קבוצת צרכנים, ההיסטים של הצרכנים שמאוחסנים בה נמחקים לצמיתות. בנוסף, אי אפשר לראות במסוף את היומנים והמדדים של קבוצות הצרכנים. עם זאת, המדדים והיומנים שמשויכים לקבוצת הצרכנים נשמרים וזמינים באמצעות Logs Explorer. מחיקה של קבוצת צרכנים לא מוחקת גם את ההודעות שהיא צרכה. ההודעות עדיין זמינות בנושאים שאליהם הן שויכו במקור.

כדי למחוק קבוצת צרכנים:

המסוף

  1. נכנסים לדף Cluster במסוף Google Cloud .

    מעבר אל Clusters

  2. ברשימת האשכולות, לוחצים על האשכול שאליו משתייכת קבוצת הצרכנים שרוצים למחוק.

    הדף Cluster details נפתח.

  3. לוחצים על קבוצת הצרכנים שרוצים למחוק.
  4. בדף פרטים של קבוצת צרכנים, לוחצים על מחיקה.
  5. מאשרים את הפעולה.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. מריצים את הפקודה gcloud managed-kafka consumer-groups delete:

    gcloud managed-kafka consumer-groups delete CONSUMER_GROUP_ID \
        --cluster=CLUSTER_ID \
        --location=LOCATION

    הפקודה הזו מסירה לצמיתות קבוצת צרכנים מאשכול השירות המנוהל ל-Apache Kafka.

    מחליפים את מה שכתוב בשדות הבאים:

    • CONSUMER_GROUP_ID: המזהה או השם של קבוצת הצרכנים.

    • CLUSTER_ID: המזהה או השם של האשכול.

    • LOCATION: המיקום של האשכול.

Go

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/managedkafka/apiv1/managedkafkapb"
	"google.golang.org/api/option"

	managedkafka "cloud.google.com/go/managedkafka/apiv1"
)

func deleteConsumerGroup(w io.Writer, projectID, region, clusterID, consumerGroupID string, opts ...option.ClientOption) error {
	// projectID := "my-project-id"
	// region := "us-central1"
	// clusterID := "my-cluster"
	// consumerGroupID := "my-consumer-group"
	ctx := context.Background()
	client, err := managedkafka.NewClient(ctx, opts...)
	if err != nil {
		return fmt.Errorf("managedkafka.NewClient got err: %w", err)
	}
	defer client.Close()

	clusterPath := fmt.Sprintf("projects/%s/locations/%s/clusters/%s", projectID, region, clusterID)
	consumerGroupPath := fmt.Sprintf("%s/consumerGroups/%s", clusterPath, consumerGroupID)
	req := &managedkafkapb.DeleteConsumerGroupRequest{
		Name: consumerGroupPath,
	}
	if err := client.DeleteConsumerGroup(ctx, req); err != nil {
		return fmt.Errorf("client.DeleteConsumerGroup got err: %w", err)
	}
	fmt.Fprint(w, "Deleted consumer group\n")
	return nil
}

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.managedkafka.v1.ConsumerGroupName;
import com.google.cloud.managedkafka.v1.ManagedKafkaClient;
import java.io.IOException;

public class DeleteConsumerGroup {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the example.
    String projectId = "my-project-id";
    String region = "my-region"; // e.g. us-east1
    String clusterId = "my-cluster";
    String consumerGroupId = "my-consumer-group";
    deleteConsumerGroup(projectId, region, clusterId, consumerGroupId);
  }

  public static void deleteConsumerGroup(
      String projectId, String region, String clusterId, String consumerGroupId) throws Exception {
    try (ManagedKafkaClient managedKafkaClient = ManagedKafkaClient.create()) {
      // This operation is being handled synchronously.
      managedKafkaClient.deleteConsumerGroup(
          ConsumerGroupName.of(projectId, region, clusterId, consumerGroupId));
      System.out.println("Deleted consumer group");
    } catch (IOException | ApiException e) {
      System.err.printf("managedKafkaClient.getConsumerGroup got err: %s", e.getMessage());
    }
  }
}

Python

from google.api_core.exceptions import NotFound
from google.cloud import managedkafka_v1

# TODO(developer)
# project_id = "my-project-id"
# region = "us-central1"
# cluster_id = "my-cluster"
# consumer_group_id = "my-consumer-group"

client = managedkafka_v1.ManagedKafkaClient()

consumer_group_path = client.consumer_group_path(
    project_id, region, cluster_id, consumer_group_id
)
request = managedkafka_v1.DeleteConsumerGroupRequest(
    name=consumer_group_path,
)

try:
    client.delete_consumer_group(request=request)
    print("Deleted consumer group")
except NotFound as e:
    print(f"Failed to delete consumer group {consumer_group_id} with error: {e.message}")

מה השלב הבא?

Apache Kafka®‎ הוא סימן מסחרי רשום של The Apache Software Foundation או של השותפים העצמאיים שלה בארצות הברית או במדינות אחרות.