Lite-Themen erstellen und verwalten

Auf dieser Seite wird erläutert, wie Sie Lite-Themen erstellen, ansehen und löschen.

Lite-Themen sind zonale Ressourcen, für die Sie Nachrichten veröffentlichen können. Wenn Sie ein Lite-Thema erstellen, müssen Sie eine Zone angeben, in der Nachrichten gespeichert werden sollen.

Nachdem Sie ein Lite-Thema erstellt haben, können Sie Nachrichten zum Lite-Thema veröffentlichen, ein Lite-Abonnement für das Lite-Thema erstellen und Nachrichten aus dem Lite-Abonnement empfangen.

Lite-Themen erstellen

Wenn Sie ein Lite-Thema erstellen, müssen Sie den Durchsatz und die Speicherkapazität festlegen. Die Anzahl und Kapazität der Partitionen bestimmen die Kapazität eines Lite-Themas.

Lite-Themen haben die folgenden Eigenschaften:

  • Anzahl der Partitionen: die Anzahl der Partitionen im Lite-Thema.
  • Speicher pro Partition: die Speichermenge in Byte für jede Partition.
  • Skalierungsfaktor: Ein ganzzahliges Vielfaches, um den Standarddurchsatz jeder Partition zu erhöhen. Der Standardskalierungsfaktor ist 1. Die besten Ergebnisse erzielen Sie, wenn Sie ein Lite-Thema mit dem Standardskalierungsfaktor erstellen. Wenn der Traffic zunimmt, aktualisieren Sie das Lite-Thema und erhöhen Sie den Skalierungsfaktor.
  • Aufbewahrungsdauer von Nachrichten: Die maximale Zeit, für die ein Lite-Thema Nachrichten speichert. Wenn Sie keinen Aufbewahrungszeitraum für Nachrichten angeben, speichert das Lite-Thema Nachrichten, bis Sie die Speicherkapazität überschreiten.

Sie können Lite-Themen mit der Cloud Console, dem gcloud-Befehlszeilentool oder der Pub/Sub Lite API erstellen.

Console

  1. Rufen Sie in der Cloud Console die Seite Lite-Themen auf.

    Zur Seite Lite-Themen

  2. Klicken Sie auf Lite-Thema erstellen.

  3. Wählen Sie eine Region und eine Zone in der Region aus.

  4. Geben Sie im Abschnitt Name eine Lite-Themen-ID ein. Der Name des Lite-Themas enthält die ID des Lite-Themas, die Zone und die Projektnummer.

  5. Geben Sie im Abschnitt Durchsatz die Anzahl der Partitionen ein, die für die Partition bereitgestellt werden soll.

  6. Geben Sie im Abschnitt Nachrichtenspeicher den Speicher pro Partition ein.

  7. Optional: Wählen Sie im Abschnitt Nachrichtenaufbewahrung die Option Nachrichten nach der angegebenen Dauer löschen, auch wenn Speicherplatz verfügbar ist aus und geben Sie einen Aufbewahrungszeitraum ein.

  8. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie zum Erstellen eines Lite-Themas den Befehl gcloud beta pubsub lite-topics create:

gcloud beta lite-topics create TOPIC_ID \
  --zone=ZONE \
  --partitions=NUMBER_OF_PARTITIONS \
  --per-partition-bytes=STORAGE_PER_PARTITION \
  [--message-retention-period=MESSAGE_RETENTION_PERIOD]

Dabei gilt:

  • TOPIC_ID: Die ID des Lite-Themas

  • ZONE: der Name einer von Pub/Sub Lite unterstützten Zone

  • NUMBER_OF_PARTITIONS: eine Ganzzahl für die Anzahl der Partitionen im Lite-Thema

  • STORAGE_PER_PARTITION: die Speichermenge für jede Partition, z. B. 30GiB

  • MESSAGE_RETENTION_PERIOD: die Zeit, die das Lite-Thema Nachrichten speichert, z. B. 1d oder 2w

Wenn die Anfrage erfolgreich ist, wird in der Befehlszeile eine Bestätigung angezeigt:

Created [TOPIC_ID].

Protokoll

Senden Sie zum Erstellen eines Lite-Themas eine POST-Anfrage wie die folgende:

POST https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth print-access-token)

Dabei gilt:

  • REGION: Region der Zone, in der das Lite-Thema gespeichert werden soll

  • PROJECT_NUMBER: die Projektnummer des Projekts, mit dem das Lite-Thema erstellt werden soll

  • ZONE: der Name einer von Pub/Sub Lite unterstützten Zone

  • TOPIC_ID: die ID des Lite-Themas

Geben Sie im Anfragetext die folgenden Felder an:

{
  "count": NUMBER_OF_PARTITIONS,
  "perPartitionBytes": STORAGE_PER_PARTITION,
}

Dabei gilt:

  • NUMBER_OF_PARTITIONS: eine Ganzzahl für die Anzahl der Partitionen im Lite-Thema

  • STORAGE_PER_PARTITION: die Speichermenge für jede Partition, z. B. 30GiB

Wenn die Anfrage erfolgreich ist, ist die Antwort das Lite-Thema im JSON-Format:

{
  "name": projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID,
  "partitionConfig": {
      "count": NUMBER_OF_PARTITIONSs,
      "scale": SCALE_FACTOR,
   },
   "retentionConfig": {
       "perPartitionBytes": STORAGE_PER_PARTITION,
       "period": MESSAGE_RETENTION_PERIOD,
   },
}

Java

import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.CloudZone;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.TopicName;
import com.google.cloud.pubsublite.TopicPath;
import com.google.cloud.pubsublite.TopicPaths;
import com.google.cloud.pubsublite.proto.Topic;
import com.google.cloud.pubsublite.proto.Topic.PartitionConfig;
import com.google.cloud.pubsublite.proto.Topic.RetentionConfig;
import com.google.protobuf.util.Durations;

public class CreateTopicExample {

  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String cloudRegion = "your-cloud-region";
    char zoneId = 'b';
    String topicId = "your-topic-id";
    long projectNumber = Long.parseLong("123456789");
    Integer partitions = 1;

    createTopicExample(cloudRegion, zoneId, projectNumber, topicId, partitions);
  }

  public static void createTopicExample(
      String cloudRegion, char zoneId, long projectNumber, String topicId, int partitions)
      throws Exception {

    TopicPath topicPath =
        TopicPaths.newBuilder()
            .setProjectNumber(ProjectNumber.of(projectNumber))
            .setZone(CloudZone.of(CloudRegion.of(cloudRegion), zoneId))
            .setTopicName(TopicName.of(topicId))
            .build();

    Topic topic =
        Topic.newBuilder()
            .setPartitionConfig(
                PartitionConfig.newBuilder()
                    // Set publishing throughput to 1 times the standard partition
                    // throughput of 4 MiB per sec. This must be in the range [1,4]. A
                    // topic with `scale` of 2 and count of 10 is charged for 20 partitions.
                    .setScale(1)
                    .setCount(partitions))
            .setRetentionConfig(
                RetentionConfig.newBuilder()
                    // How long messages are retained.
                    .setPeriod(Durations.fromDays(1))
                    // Set storage per partition to 100 GiB. This must be 30 GiB-10 TiB.
                    // If the number of bytes stored in any of the topic's partitions grows
                    // beyond this value, older messages will be dropped to make room for
                    // newer ones, regardless of the value of `period`.
                    .setPerPartitionBytes(100 * 1024 * 1024 * 1024L))
            .setName(topicPath.value())
            .build();

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      Topic response = adminClient.createTopic(topic).get();
      System.out.println(response.getAllFields() + "created successfully.");
    }
  }
}

Eine Liste der verfügbaren Zonen finden Sie unter Pub/Sub Lite-Standorte.

Nach dem Erstellen des Lite-Themas können Sie die Anzahl der Partitionen nicht aktualisieren, aber Sie können den Durchsatz und die Speicherkapazität ändern. Weitere Informationen finden Sie unter Kapazität skalieren.

Kapazitäten bereitstellen

Lite-Themen bestehen aus Partitionen. Eine Partition unterstützt die folgende Kapazität:

  • Veröffentlichungsdurchsatz: Die maximale Gesamtrate, mit der Sie Nachrichten veröffentlichen können. Der Standardwert beträgt 4 MiB pro Sekunde.
  • Abodurchsatz: Die maximale Rate, mit der Nachrichten an Lite-Abos weitergeleitet werden. Der Standardwert ist 8 MiB pro Sekunde.
  • Storage: Die maximale Gesamtgröße der Nachrichten in der Partition. Sie können zwischen 30 GiB-10-TiB Speicher angeben.

Wenn Sie die Speicherkapazität überschreiten, entfernt der Pub/Sub Lite-Dienst die älteste Nachricht von der Partition, unabhängig von der Aufbewahrungsdauer für die älteste Nachricht. Der Pub/Sub Lite-Dienst entfernt Nachrichten auf Best-Effort-Basis.

Lite-Themen aktualisieren

Sie können den Aufbewahrungszeitraum für Nachrichten aktualisieren und die Kapazität eines Lite-Themas skalieren. Sie können die Anzahl der Partitionen oder die Zone nicht aktualisieren. Informationen zum Skalieren der Kapazität eines Lite-Themas finden Sie unter Kapazität skalieren.

Sie können ein Lite-Thema mit der Cloud Console, dem gcloud-Befehlszeilentool oder der Pub/Sub Lite API aktualisieren.

Console

  1. Rufen Sie in der Cloud Console die Seite Lite-Themen auf.

    Zur Seite Lite-Themen

  2. Klicken Sie auf die Lite-Themen-ID.

  3. Klicken Sie auf Bearbeiten.

  4. Geben Sie den Speicher pro Partition und den Aufbewahrungszeitraum ein.

  5. Wählen Sie einen Skalierungsfaktor aus.

  6. Geben Sie den Speicher pro Partition ein.

gcloud

Verwenden Sie den Befehl gcloud beta pubsub lite-topics update, um ein Lite-Thema zu aktualisieren:

gcloud beta lite-topics update TOPIC_ID \
  --zone=ZONE \
  --scale=SCALE_FACTOR \
  --per-partition-bytes=STORAGE_PER_PARTITION \
  --message-retention-period=MESSAGE_RETENTION_PERIOD

Dabei gilt:

  • TOPIC_ID: die ID des Lite-Themas

  • ZONE: der Name der Zone, in der sich das Lite-Thema befindet

  • SCALE_FACTOR: ein ganzzahliges Vielfaches, um den Standarddurchsatz jeder Partition zu erhöhen

  • STORAGE_PER_PARTITION: die Speichermenge für jede Partition, z. B. 30GiB

  • MESSAGE_RETENTION_PERIOD: die Zeit, die das Lite-Thema Nachrichten speichert, z. B. 1d oder 2w

Wenn die Anfrage erfolgreich ist, wird in der Befehlszeile das Lite-Thema angezeigt:

name: projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID
partitionConfig:
  count: NUMBER_OF_PARTITIONS
  scale: SCALE_FACTOR
retentionConfig:
  perPartitionBytes: STORAGE_PER_PARTITION
  period: MESSAGE_RETENTION_PERIOD

Protokoll

Senden Sie zum Aktualisieren eines Lite-Themas eine PATCH-Anfrage wie die folgende:

PATCH https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID?updateMask=partitionConfig.scale,retentionConfig.perPartitionBytes,retentionConfig.period
Authorization: Bearer $(gcloud auth print-access-token)

Dabei gilt:

  • REGION: Region der Zone, in der sich das Lite-Thema befindet

  • PROJECT_NUMBER: die Projektnummer des Projekts mit dem Lite-Thema

  • ZONE: der Name der Zone, in der sich das Lite-Thema befindet

  • TOPIC_ID: die ID des Lite-Themas

Geben Sie im Anfragetext die folgenden Felder an:

{
  "partitionConfig": {
      "scale": SCALE_FACTOR,
   },
   "retentionConfig": {
       "perPartitionBytes": STORAGE_PER_PARTITION,
       "period": MESSAGE_RETENTION_PERIOD,
   },
}

Dabei gilt:

  • SCALE_FACTOR: ein ganzzahliges Vielfaches, um den Standarddurchsatz jeder Partition zu erhöhen

  • STORAGE_PER_PARTITION: die Speichermenge für jede Partition, z. B. 30GiB

  • MESSAGE_RETENTION_PERIOD: die Zeit, die das Lite-Thema Nachrichten speichert, z. B. 1d oder 2w

Wenn die Anfrage erfolgreich ist, ist die Antwort das Lite-Thema im JSON-Format:

{
  "name": projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID,
  "partitionConfig": {
      "count": NUMBER_OF_PARTITIONS,
      "scale": SCALE_FACTOR,
   },
   "retentionConfig": {
       "perPartitionBytes": STORAGE_PER_PARTITION,
       "period": MESSAGE_RETENTION_PERIOD,
   },
}

Java

import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.CloudZone;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.TopicName;
import com.google.cloud.pubsublite.TopicPath;
import com.google.cloud.pubsublite.TopicPaths;
import com.google.cloud.pubsublite.proto.Topic;
import com.google.cloud.pubsublite.proto.Topic.PartitionConfig;
import com.google.cloud.pubsublite.proto.Topic.RetentionConfig;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.Durations;
import java.util.Arrays;

public class UpdateTopicExample {

  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String cloudRegion = "your-cloud-region";
    char zoneId = 'b';
    String topicId = "your-topic-id";
    long projectNumber = Long.parseLong("123456789");

    updateTopicExample(cloudRegion, zoneId, projectNumber, topicId);
  }

  public static void updateTopicExample(
      String cloudRegion, char zoneId, long projectNumber, String topicId) throws Exception {

    TopicPath topicPath =
        TopicPaths.newBuilder()
            .setProjectNumber(ProjectNumber.of(projectNumber))
            .setZone(CloudZone.of(CloudRegion.of(cloudRegion), zoneId))
            .setTopicName(TopicName.of(topicId))
            .build();

    Iterable<String> iterablePaths =
        Arrays.asList(
            "partition_config.scale",
            "retention_config.per_partition_bytes",
            "retention_config.period");

    FieldMask MASK = FieldMask.newBuilder().addAllPaths(iterablePaths).build();

    Topic topic =
        Topic.newBuilder()
            .setPartitionConfig(
                PartitionConfig.newBuilder()
                    // Set publishing throughput to 4 times the standard partition
                    // throughput of 4 MiB per sec. This must be in the range [1,4]. A
                    // topic with `scale` of 2 and count of 10 is charged for 20 partitions.
                    .setScale(4)
                    .build())
            .setRetentionConfig(
                RetentionConfig.newBuilder()
                    // Set storage per partition to 200 GiB. This must be 30 GiB-10 TiB.
                    // If the number of bytes stored in any of the topic's partitions grows
                    // beyond this value, older messages will be dropped to make room for
                    // newer ones, regardless of the value of `period`.
                    // Be careful when decreasing storage per partition as it may cause
                    // lost messages.
                    .setPerPartitionBytes(200 * 1024 * 1024 * 1024L)
                    .setPeriod(Durations.fromDays(7)))
            .setName(topicPath.value())
            .build();

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      Topic topicBeforeUpdate = adminClient.getTopic(topicPath).get();
      System.out.println("Before update: " + topicBeforeUpdate.getAllFields());

      Topic topicAfterUpdate = adminClient.updateTopic(topic, MASK).get();
      System.out.println("After update: " + topicAfterUpdate.getAllFields());
    }
  }
}

Skalierungskapazität

Sie können die Durchsatzkapazität eines Lite-Themas mit vertikaler Skalierung erhöhen. Wenn Sie die Durchsatzkapazität eines Lite-Themas erhöhen möchten, skalieren Sie die Kapazität der Partitionen um ein Ganzzahlzeichen.

Skalierungsfaktor Veröffentlichungsdurchsatz Durchsatz beim Abonnieren
1 4 MiB pro Sek. 8 MiB pro Sek.
2 8 MiB pro Sek. 16 MiB pro Sek.
3 12 MiB pro Sek. 24 MiB pro Sek.
4 16 MiB pro Sek. 32 MiB pro Sek.

Wenn Sie beispielsweise den Skalierungsfaktor auf 2 aktualisieren, beträgt der Veröffentlichungsdurchsatz jeder Partition 8 MiB pro Sekunde und der abonnierende Durchsatz jeder Partition 16 MiB pro Sekunde.

Sie können auch den Speicher in einem Lite-Thema erhöhen oder reduzieren. Das Lite-Thema stellt für jede Partition denselben Speicherplatz bereit. Wenn Sie den Speicher auf 60 GiB erhöhen, erhält jede Partition 60 GiB.

Wenn Sie den Speicherplatz in einem Lite-Thema verringern, entfernt der Pub/Sub Lite-Dienst zuerst die ältesten Nachrichten.

Details zu Lite-Themen abrufen

Details zu einem Lite-Thema erhalten Sie über die Cloud Console, das gcloud-Befehlszeilentool oder die Pub/Sub Lite API.

Console

  1. Rufen Sie in der Cloud Console die Seite Lite-Themen auf.

    Zur Seite Lite-Themen

  2. Klicken Sie auf die Lite-Themen-ID.

gcloud

Mit dem Befehl gcloud beta pubsub lite-topics describe können Sie Details zu einem Lite-Thema abrufen:

gcloud beta lite-topics describe TOPIC_ID \
--zone=ZONE

Dabei gilt:

  • TOPIC_ID: die ID des Lite-Themas

  • ZONE: der Name der Zone, in der sich das Lite-Thema befindet

Wenn die Anfrage erfolgreich ist, wird in der Befehlszeile das Lite-Thema angezeigt:

name: projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID
partitionConfig:
  count: NUMBER_OF_PARTITIONS
  scale: SCALE_FACTOR
retentionConfig:
  perPartitionBytes: STORAGE_PER_PARTITION
  period: MESSAGE_RETENTION_PERIOD

Protokoll

Wenn Sie Details zu einem Lite-Thema abrufen möchten, senden Sie eine GET-Anfrage wie die folgende:

GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth print-access-token)

Dabei gilt:

  • REGION: Region der Zone, in der sich das Lite-Thema befindet

  • PROJECT_NUMBER: die Projektnummer des Projekts mit dem Lite-Thema

  • ZONE: der Name der Zone, in der sich das Lite-Thema befindet

  • TOPIC_ID: die ID des Lite-Themas

Wenn die Anfrage erfolgreich ist, ist die Antwort das Lite-Thema im JSON-Format:

{
  "name": projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID,
  "partitionConfig": {
      "count": NUMBER_OF_PARTITIONS,
      "scale": SCALE_FACTOR,
   },
   "retentionConfig": {
       "perPartitionBytes": STORAGE_PER_PARTITION,
       "period": MESSAGE_RETENTION_PERIOD,
   },
}

Java

import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.CloudZone;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.TopicName;
import com.google.cloud.pubsublite.TopicPath;
import com.google.cloud.pubsublite.TopicPaths;
import com.google.cloud.pubsublite.proto.Topic;

public class GetTopicExample {

  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String cloudRegion = "your-cloud-region";
    char zoneId = 'b';
    // Choose an existing topic.
    String topicId = "your-topic-id";
    long projectNumber = Long.parseLong("123456789");

    getTopicExample(cloudRegion, zoneId, projectNumber, topicId);
  }

  public static void getTopicExample(
      String cloudRegion, char zoneId, long projectNumber, String topicId) throws Exception {
    TopicPath topicPath =
        TopicPaths.newBuilder()
            .setProjectNumber(ProjectNumber.of(projectNumber))
            .setZone(CloudZone.of(CloudRegion.of(cloudRegion), zoneId))
            .setTopicName(TopicName.of(topicId))
            .build();

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      Topic topic = adminClient.getTopic(topicPath).get();
      long numPartitions = adminClient.getTopicPartitionCount(topicPath).get();
      System.out.println(topic.getAllFields() + "\nhas " + numPartitions + " partition(s).");
    }
  }
}

Lite-Themen auflisten

Sie können Lite-Themen in einem Projekt mit der Cloud Console, dem gcloud-Befehlszeilentool oder der Pub/Sub Lite API auflisten.

Console

So rufen Sie eine Liste der Lite-Themen in einem Projekt ab: Wechseln zur Seite Lite-Themen ,

gcloud

Verwenden Sie den Befehl gcloud beta pubsub lite-topics list, um die Lite-Themen in einem Projekt aufzulisten:

gcloud beta lite-topics list \
  --zone=ZONE

Ersetzen Sie ZONE durch den Namen der Zone, in der sich das Lite-Thema befindet.

Wenn die Anfrage erfolgreich ist, werden in der Befehlszeile die Lite-Themen angezeigt:

---
name: projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID
partitionConfig:
  count: NUMBER_OF_PARTITIONS
  scale: SCALE_FACTOR
retentionConfig:
  perPartitionBytes: STORAGE_PER_PARTITION
  period: MESSAGE_RETENTION_PERIOND
---
name: projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID
partitionConfig:
  count: NUMBER_OF_PARTITIONS
  scale: SCALE_FACTOR
retentionConfig:
  perPartitionBytes: STORAGE_PER_PARTITION
  period: MESSAGE_RETENTION_PERIOND

Protokoll

Um die Lite-Themen in einem Projekt aufzulisten, senden Sie eine GET-Anfrage wie die folgende:

GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/topics
Authorization: Bearer $(gcloud auth print-access-token)

Dabei gilt:

  • REGION: Region der Zone, in der sich das Lite-Thema befindet

  • PROJECT_NUMBER: die Projektnummer des Projekts mit dem Lite-Thema

Wenn die Anfrage erfolgreich ist, ist die Antwort eine Liste von Lite-Themen im JSON-Format:

{
  "topics": [
      {
          "name": "projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID",
      },
      {
          "name": "projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID",
      }
  ]
}

Java

import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.CloudZone;
import com.google.cloud.pubsublite.LocationPath;
import com.google.cloud.pubsublite.LocationPaths;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.proto.Topic;
import java.util.List;

public class ListTopicsExample {

  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String cloudRegion = "your-cloud-region";
    char zoneId = 'b';
    long projectNumber = Long.parseLong("123456789");

    listTopicsExample(cloudRegion, zoneId, projectNumber);
  }

  public static void listTopicsExample(String cloudRegion, char zoneId, long projectNumber)
      throws Exception {

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    LocationPath locationPath =
        LocationPaths.newBuilder()
            .setProjectNumber(ProjectNumber.of(projectNumber))
            .setZone(CloudZone.of(CloudRegion.of(cloudRegion), zoneId))
            .build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      List<Topic> topics = adminClient.listTopics(locationPath).get();
      for (Topic topic : topics) {
        System.out.println(topic.getAllFields());
      }
      System.out.println(topics.size() + " topic(s) listed.");
    }
  }
}

Lite-Themen löschen

Sie können Lite-Themen mit der Cloud Console, dem gcloud-Befehlszeilentool oder der Pub/Sub Lite API löschen.

Console

  1. Rufen Sie in der Cloud Console die Seite Lite-Themen auf.

    Zur Seite Lite-Themen

  2. Klicken Sie auf die Lite-Themen-ID.

  3. Klicken Sie auf der Seite Lite-Themendetails auf Löschen.

  4. Geben Sie im angezeigten Feld delete ein, um zu bestätigen, dass Sie das Lite-Thema löschen möchten.

  5. Klicken Sie auf Löschen.

gcloud

Verwenden Sie den Befehl gcloud beta pubsub lite-topics delete, um ein Lite-Thema zu löschen:

  1. Führen Sie den Befehl delete aus:

    gcloud beta lite-topics delete TOPIC_ID \
     --zone=ZONE
    

    Dabei gilt:

    • TOPIC_ID: die ID des Lite-Themas

    • ZONE: der Name der Zone, in der sich das Lite-Thema befindet

  2. Zum Bestätigen geben Sie "Y" ein.

Wenn die Anfrage erfolgreich ist, lautet die Antwort wie folgt:

Deleted topic [TOPIC_ID].

Protokoll

Um ein Lite-Thema zu löschen, senden Sie eine DELETE-Anfrage wie die folgende:

DELETE https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/ZONE/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth print-access-token)

Dabei gilt:

  • REGION: Region der Zone, in der sich das Lite-Thema befindet

  • PROJECT_NUMBER: die Projektnummer des Projekts mit dem Lite-Thema

  • ZONE: der Name der Zone, in der sich das Lite-Thema befindet

  • TOPIC_ID: die ID des Lite-Themas

Wenn die Anfrage erfolgreich ist, ist die Antwort ein leeres JSON-Objekt.

Java

import com.google.cloud.pubsublite.AdminClient;
import com.google.cloud.pubsublite.AdminClientSettings;
import com.google.cloud.pubsublite.CloudRegion;
import com.google.cloud.pubsublite.CloudZone;
import com.google.cloud.pubsublite.ProjectNumber;
import com.google.cloud.pubsublite.TopicName;
import com.google.cloud.pubsublite.TopicPath;
import com.google.cloud.pubsublite.TopicPaths;

public class DeleteTopicExample {

  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String cloudRegion = "your-cloud-region";
    char zoneId = 'b';
    // Choose an existing topic.
    String topicId = "your-topic-id";
    long projectNumber = Long.parseLong("123456789");

    deleteTopicExample(cloudRegion, zoneId, projectNumber, topicId);
  }

  public static void deleteTopicExample(
      String cloudRegion, char zoneId, long projectNumber, String topicId) throws Exception {
    TopicPath topicPath =
        TopicPaths.newBuilder()
            .setProjectNumber(ProjectNumber.of(projectNumber))
            .setZone(CloudZone.of(CloudRegion.of(cloudRegion), zoneId))
            .setTopicName(TopicName.of(topicId))
            .build();

    AdminClientSettings adminClientSettings =
        AdminClientSettings.newBuilder().setRegion(CloudRegion.of(cloudRegion)).build();

    try (AdminClient adminClient = AdminClient.create(adminClientSettings)) {
      adminClient.deleteTopic(topicPath).get();
      System.out.println(topicPath.value() + " deleted successfully.");
    }
  }

Wenn Sie ein Lite-Thema löschen, können Sie darin keine Nachrichten veröffentlichen. Die Lite-Abos für das Lite-Thema sind noch vorhanden, aber Sie können keine Nachrichten von den Lite-Abos empfangen.