Themen erstellen und verwalten

In Pub/Sub ist ein Thema eine benannte Ressource, die einen Feed von Nachrichten darstellt.

In diesem Dokument wird erläutert, wie Sie ein Pub/Sub-Thema erstellen, aktualisieren, ansehen und löschen. In diesem Dokument wird auch erläutert, wie Themen und Abos benannt werden.

Datenreplikation zu einem Thema

Ein Pub/Sub-Thema verwendet drei Zonen zum Speichern von Daten. Der Dienst gewährleistet die synchrone Replikation in mindestens zwei Zonen und die bestmögliche Replikation auf eine zusätzliche dritte Zone. Die Pub/Sub-Replikation befindet sich nur in einer Region.

Eigenschaften eines Themas

Wenn Sie ein Thema erstellen oder aktualisieren, müssen Sie seine Attribute angeben.

  • Fügen Sie ein Standardabo hinzu. Fügt dem Pub/Sub-Thema ein Standardabo hinzu. Sie können nach dem Erstellen des Themas ein weiteres Abo für das Thema erstellen. Das Standardabo hat die folgenden Eigenschaften:

    • Abo-ID von -sub
    • Pull-Zustellungstyp
    • Dauer der Nachrichtenaufbewahrung von 7 Tagen
    • Ablauf nach 31 Tagen Inaktivität
    • Bestätigungsfrist von 10 Sekunden
    • Richtlinie für sofortige Wiederholung
  • Schema Ein Schema ist ein Format, dem das Nachrichtendatenfeld entsprechen muss. Ein Schema ist ein Vertrag zwischen dem Publisher und dem Abonnenten, der von Pub/Sub erzwungen wird. Mit Themenschemas können Nachrichtentypen und -berechtigungen standardisiert werden, sodass sie von verschiedenen Teams in Ihrer Organisation genutzt werden können. Pub/Sub erstellt eine zentrale Behörde für Nachrichtentypen und Berechtigungen. Informationen zum Erstellen eines Themas mit Schema finden Sie unter Schemas erstellen und verwalten.

  • Aufbewahrungsdauer für Nachrichten: Gibt an, wie lange Nachrichten vom Pub/Sub-Thema nach der Veröffentlichung aufbewahrt werden. Nach Ablauf der Aufbewahrungsdauer für Nachrichten kann Pub/Sub die Nachricht unabhängig vom Status der Bestätigung verwerfen. Für das Speichern aller zu einem Thema veröffentlichten Nachrichten fallen Gebühren an.

    • Standard = Nicht aktiviert
    • Mindestwert = 10 Minuten
    • Maximalwert = 31 Tage
  • Einen vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) verwenden Gibt an, ob das Thema mit einem CMEK verschlüsselt wird. Pub/Sub verschlüsselt Nachrichten standardmäßig mit von Google verwalteten Schlüsseln. Wenn Sie diese Option angeben, verwendet Pub/Sub das Envelope-Verschlüsselungsmuster mit CMEK. Bei diesem Ansatz verschlüsselt Cloud KMS die Nachrichten nicht. Stattdessen verschlüsselt Cloud KMS die von Pub/Sub für jedes Thema erstellten Datenverschlüsselungsschlüssel (Data Encryption Keys, DEKs). Pub/Sub verschlüsselt die Nachrichten mit dem neuesten DEK, der für das Thema generiert wurde. Pub/Sub entschlüsselt die Nachrichten kurz vor der Zustellung an die Abonnenten. Weitere Informationen zum Erstellen eines Schlüssels finden Sie unter Nachrichtenverschlüsselung konfigurieren.

Richtlinien für das Benennen von Themen, Abos, Schemas oder Snapshots

Ein Pub/Sub-Ressourcenname identifiziert eine Pub/Sub-Ressource wie ein Thema, ein Abo, ein Schema oder einen Snapshot eindeutig. Der Ressourcenname muss das folgende Format haben:

projects/project-identifier/collection/ID

  • project-identifier: muss die Projekt-ID oder Projektnummer sein, die in der Google Cloud Console verfügbar ist. Beispiel: my-cool-project ist eine Projekt-ID. 123456789123 ist eine Projektnummer.

  • collection: muss topics, subscriptions, schemas oder snapshots sein.

  • ID: Muss den folgenden Richtlinien entsprechen:

    • Beginnen Sie nicht mit dem String "goog".
    • Muss mit einem Buchstaben beginnen
    • Er muss zwischen 3 und 255 Zeichen lang sein
    • Darf nur die folgenden Zeichen enthalten: Buchstaben [A-Za-z], Ziffern [0-9], Bindestriche -, Unterstriche _, Punkte ., Tilden ~, Pluszeichen + und Prozentzeichen %

    Sie können die Sonderzeichen aus der vorherigen Liste in Ressourcennamen ohne URL-Codierung verwenden. Alle anderen Sonderzeichen müssen jedoch korrekt codiert oder decodiert werden, wenn Sie sie in URLs verwenden. mi-tópico ist beispielsweise eine ungültige ID. mi-t%C3%B3pico ist jedoch gültig. Dieses Format ist wichtig, wenn Sie REST-Aufrufe ausführen.

Erforderliche Rollen und Berechtigungen zum Verwalten von Themen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Pub/Sub-Bearbeiter“ (roles/pubsub.editor) für das Thema oder Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Verwalten von Themen benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen und Verwalten von Themen erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Themen zu erstellen und zu verwalten:

  • Erstellen Sie ein Thema: pubsub.topics.create
  • Themen löschen: pubsub.topics.delete
  • Abos von einem Thema trennen: pubsub.topics.detachSubscription
  • Thema abrufen: pubsub.topics.get
  • Thema auflisten: pubsub.topics.list
  • In einem Thema veröffentlichen: pubsub.topics.publish
  • Themen aktualisieren: pubsub.topics.update
  • Rufen Sie die IAM-Richtlinie für ein Thema ab: pubsub.topics.getIamPolicy
  • Konfigurieren Sie die IAM-Richtlinie für ein Thema: pubsub.topics.setIamPolicy

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Sie können die Zugriffssteuerung auf Projektebene und auf der Ebene einer einzelnen Ressource konfigurieren. Sie können ein Abo in einem Projekt erstellen und an ein Thema in einem anderen Projekt anhängen. Prüfen Sie, ob Sie die erforderlichen Berechtigungen für jedes Projekt haben.

Thema erstellen

Erstellen Sie ein Thema, bevor Sie es veröffentlichen oder abonnieren können.

Console

So erstellen Sie ein Thema:

  1. Öffnen Sie in der Google Cloud Console die Pub/Sub-Seite Themen.

    Themen aufrufen

  2. Klicken Sie auf Thema erstellen.

  3. Geben Sie im Feld Themen-ID eine ID für das Thema ein.

  4. Behalten Sie die Option Standardabo hinzufügen bei.

  5. Wählen Sie nicht die anderen Optionen aus.

  6. Klicken Sie auf Thema erstellen.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    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.

  2. Führen Sie den Befehl gcloud pubsub topics create aus, um ein Thema zu erstellen:

    gcloud pubsub topics create TOPIC_ID

REST

Verwenden Sie die Methode projects.topics.create, um ein Thema zu erstellen:

Die Anfrage muss mit einem Zugriffstoken im Header Authorization authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token.

PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer ACCESS_TOKEN
    

Wobei:

  • PROJECT_ID ist die Projekt-ID.
  • TOPIC_ID ist Ihre Themen-ID.
  • Lösung:

    {
     "name": "projects/PROJECT_ID/topics/TOPIC_ID"
    }
    

    C++

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung C++ in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    namespace pubsub = ::google::cloud::pubsub;
    [](pubsub::TopicAdminClient client, std::string project_id,
       std::string topic_id) {
      auto topic = client.CreateTopic(pubsub::TopicBuilder(
          pubsub::Topic(std::move(project_id), std::move(topic_id))));
      // Note that kAlreadyExists is a possible error when the library retries.
      if (topic.status().code() == google::cloud::StatusCode::kAlreadyExists) {
        std::cout << "The topic already exists\n";
        return;
      }
      if (!topic) throw std::move(topic).status();
    
      std::cout << "The topic was successfully created: " << topic->DebugString()
                << "\n";
    }

    C#

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung C# in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    
    using Google.Cloud.PubSub.V1;
    using Grpc.Core;
    using System;
    
    public class CreateTopicSample
    {
        public Topic CreateTopic(string projectId, string topicId)
        {
            PublisherServiceApiClient publisher = PublisherServiceApiClient.Create();
            var topicName = TopicName.FromProjectTopic(projectId, topicId);
            Topic topic = null;
    
            try
            {
                topic = publisher.CreateTopic(topicName);
                Console.WriteLine($"Topic {topic.Name} created.");
            }
            catch (RpcException e) when (e.Status.StatusCode == StatusCode.AlreadyExists)
            {
                Console.WriteLine($"Topic {topicName} already exists.");
            }
            return topic;
        }
    }

    Go

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Go in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/pubsub"
    )
    
    func create(w io.Writer, projectID, topicID string) error {
    	// projectID := "my-project-id"
    	// topicID := "my-topic"
    	ctx := context.Background()
    	client, err := pubsub.NewClient(ctx, projectID)
    	if err != nil {
    		return fmt.Errorf("pubsub.NewClient: %w", err)
    	}
    	defer client.Close()
    
    	t, err := client.CreateTopic(ctx, topicID)
    	if err != nil {
    		return fmt.Errorf("CreateTopic: %w", err)
    	}
    	fmt.Fprintf(w, "Topic created: %v\n", t)
    	return nil
    }
    

    Java

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Java in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    
    import com.google.cloud.pubsub.v1.TopicAdminClient;
    import com.google.pubsub.v1.Topic;
    import com.google.pubsub.v1.TopicName;
    import java.io.IOException;
    
    public class CreateTopicExample {
      public static void main(String... args) throws Exception {
        // TODO(developer): Replace these variables before running the sample.
        String projectId = "your-project-id";
        String topicId = "your-topic-id";
    
        createTopicExample(projectId, topicId);
      }
    
      public static void createTopicExample(String projectId, String topicId) throws IOException {
        try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
          TopicName topicName = TopicName.of(projectId, topicId);
          Topic topic = topicAdminClient.createTopic(topicName);
          System.out.println("Created topic: " + topic.getName());
        }
      }
    }

    Node.js

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Node.js in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    /**
     * TODO(developer): Uncomment this variable before running the sample.
     */
    // const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
    
    // Imports the Google Cloud client library
    const {PubSub} = require('@google-cloud/pubsub');
    
    // Creates a client; cache this for further use
    const pubSubClient = new PubSub();
    
    async function createTopic(topicNameOrId) {
      // Creates a new topic
      await pubSubClient.createTopic(topicNameOrId);
      console.log(`Topic ${topicNameOrId} created.`);
    }

    PHP

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung PHP in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub PHP API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    use Google\Cloud\PubSub\PubSubClient;
    
    /**
     * Creates a Pub/Sub topic.
     *
     * @param string $projectId  The Google project ID.
     * @param string $topicName  The Pub/Sub topic name.
     */
    function create_topic($projectId, $topicName)
    {
        $pubsub = new PubSubClient([
            'projectId' => $projectId,
        ]);
        $topic = $pubsub->createTopic($topicName);
    
        printf('Topic created: %s' . PHP_EOL, $topic->name());
    }

    Python

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Python in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    from google.cloud import pubsub_v1
    
    # TODO(developer)
    # project_id = "your-project-id"
    # topic_id = "your-topic-id"
    
    publisher = pubsub_v1.PublisherClient()
    topic_path = publisher.topic_path(project_id, topic_id)
    
    topic = publisher.create_topic(request={"name": topic_path})
    
    print(f"Created topic: {topic.name}")

    Ruby

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Ruby in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    # topic_id = "your-topic-id"
    
    pubsub = Google::Cloud::Pubsub.new
    
    topic = pubsub.create_topic topic_id
    
    puts "Topic #{topic.name} created."

    Einschränkungen für Organisationsrichtlinien

    Organisationsrichtlinien können das Erstellen von Themen einschränken, z. B. können sie den Nachrichtenspeicher in einer Compute Engine-Region einschränken. Um Fehler beim Erstellen von Themen zu vermeiden, prüfen und aktualisieren Sie gegebenenfalls die Organisationsrichtlinien, bevor Sie ein Thema erstellen.

    Wenn Ihr Projekt neu erstellt wurde, warten Sie einige Minuten, bis die Organisationsrichtlinie initialisiert wurde, bevor Sie ein Thema erstellen.

    Zu den Organisationsrichtlinien

    Thema löschen

    Wenn Sie ein Thema löschen, werden die zugehörigen Abos nicht gelöscht. Der Nachrichtenrückstand des Abos ist für Abonnenten verfügbar. Nachdem ein Thema gelöscht wurde, haben seine Abos den Themennamen _deleted-topic_. Wenn Sie versuchen, eine Pub/Sub-Ressource mit demselben Namen und Typ der gerade gelöschten Ressource zu erstellen, wird für einen kurzen Zeitraum ein Fehler angezeigt.

    Console

    1. Öffnen Sie in der Google Cloud Console die Pub/Sub-Seite Themen.

      Themen aufrufen

    2. Wählen Sie ein Thema aus und klicken Sie auf Weitere Aktionen.

    3. Klicken Sie auf Löschen.

      Das Fenster Thema löschen wird angezeigt.

    4. Geben Sie delete ein und klicken Sie dann auf Löschen.

    gcloud

    1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

      Cloud Shell aktivieren

      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.

    2. Verwenden Sie den Befehl gcloud pubsub topics delete, um ein Thema zu löschen:

      gcloud pubsub topics delete TOPIC_ID

    REST

    Verwenden Sie die Methode projects.topics.delete, um ein Thema zu löschen:

    Anfrage

    Die Anfrage muss mit einem Zugriffstoken im Header Authorization authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token.

    DELETE https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
    Authorization: Bearer ACCESS_TOKEN
        

    Wobei:

  • PROJECT_ID ist die Projekt-ID.
  • TOPIC_ID ist Ihre Themen-ID.
  • Lösung:

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

    C++

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung C++ in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    namespace pubsub = ::google::cloud::pubsub;
    [](pubsub::TopicAdminClient client, std::string const& project_id,
       std::string const& topic_id) {
      auto status = client.DeleteTopic(
          pubsub::Topic(std::move(project_id), std::move(topic_id)));
      // Note that kNotFound is a possible result when the library retries.
      if (status.code() == google::cloud::StatusCode::kNotFound) {
        std::cout << "The topic was not found\n";
        return;
      }
      if (!status.ok()) throw std::runtime_error(status.message());
    
      std::cout << "The topic was successfully deleted\n";
    }

    C#

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung C# in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    
    using Google.Cloud.PubSub.V1;
    
    public class DeleteTopicSample
    {
        public void DeleteTopic(string projectId, string topicId)
        {
            PublisherServiceApiClient publisher = PublisherServiceApiClient.Create();
            TopicName topicName = TopicName.FromProjectTopic(projectId, topicId);
            publisher.DeleteTopic(topicName);
        }
    }

    Go

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Go in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/pubsub"
    )
    
    func delete(w io.Writer, projectID, topicID string) error {
    	// projectID := "my-project-id"
    	// topicID := "my-topic"
    	ctx := context.Background()
    	client, err := pubsub.NewClient(ctx, projectID)
    	if err != nil {
    		return fmt.Errorf("pubsub.NewClient: %w", err)
    	}
    	defer client.Close()
    
    	t := client.Topic(topicID)
    	if err := t.Delete(ctx); err != nil {
    		return fmt.Errorf("Delete: %w", err)
    	}
    	fmt.Fprintf(w, "Deleted topic: %v\n", t)
    	return nil
    }
    

    Java

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Java in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    
    import com.google.api.gax.rpc.NotFoundException;
    import com.google.cloud.pubsub.v1.TopicAdminClient;
    import com.google.pubsub.v1.TopicName;
    import java.io.IOException;
    
    public class DeleteTopicExample {
      public static void main(String... args) throws Exception {
        // TODO(developer): Replace these variables before running the sample.
        String projectId = "your-project-id";
        String topicId = "your-topic-id";
    
        deleteTopicExample(projectId, topicId);
      }
    
      public static void deleteTopicExample(String projectId, String topicId) throws IOException {
        try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
          TopicName topicName = TopicName.of(projectId, topicId);
          try {
            topicAdminClient.deleteTopic(topicName);
            System.out.println("Deleted topic.");
          } catch (NotFoundException e) {
            System.out.println(e.getMessage());
          }
        }
      }
    }

    Node.js

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Node.js in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    /**
     * TODO(developer): Uncomment this variable before running the sample.
     */
    // const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
    
    // Imports the Google Cloud client library
    const {PubSub} = require('@google-cloud/pubsub');
    
    // Creates a client; cache this for further use
    const pubSubClient = new PubSub();
    
    async function deleteTopic(topicNameOrId) {
      /**
       * TODO(developer): Uncomment the following line to run the sample.
       */
      // const topicName = 'my-topic';
    
      // Deletes the topic
      await pubSubClient.topic(topicNameOrId).delete();
      console.log(`Topic ${topicNameOrId} deleted.`);
    }

    PHP

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung PHP in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub PHP API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    use Google\Cloud\PubSub\PubSubClient;
    
    /**
     * Creates a Pub/Sub topic.
     *
     * @param string $projectId  The Google project ID.
     * @param string $topicName  The Pub/Sub topic name.
     */
    function delete_topic($projectId, $topicName)
    {
        $pubsub = new PubSubClient([
            'projectId' => $projectId,
        ]);
        $topic = $pubsub->topic($topicName);
        $topic->delete();
    
        printf('Topic deleted: %s' . PHP_EOL, $topic->name());
    }

    Python

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Python in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    from google.cloud import pubsub_v1
    
    # TODO(developer)
    # project_id = "your-project-id"
    # topic_id = "your-topic-id"
    
    publisher = pubsub_v1.PublisherClient()
    topic_path = publisher.topic_path(project_id, topic_id)
    
    publisher.delete_topic(request={"topic": topic_path})
    
    print(f"Topic deleted: {topic_path}")

    Ruby

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Ruby in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    # topic_id = "your-topic-id"
    
    pubsub = Google::Cloud::Pubsub.new
    
    topic = pubsub.topic topic_id
    topic.delete
    
    puts "Topic #{topic_id} deleted."

    Thema auflisten

    Console

    • Öffnen Sie in der Google Cloud Console die Pub/Sub-Seite Themen.

      Themen aufrufen

      Auf der Seite Themen sind alle verfügbaren Themen aufgeführt.

    gcloud

    1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

      Cloud Shell aktivieren

      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.

    2. Verwenden Sie den Befehl gcloud pubsub topics list, um Themen aufzulisten:

      gcloud pubsub topics list

    REST

    Verwenden Sie die projects.topics.list-Methode, um Themen aufzulisten:

    Anfrage

    Die Anfrage muss mit einem Zugriffstoken im Header Authorization authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token.

    GET https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics
    Authorization: Bearer ACCESS_TOKEN
        

    Wobei:

  • PROJECT_ID ist die Projekt-ID.
  • Lösung:

    {
      "topics": [
        {
          "name": "projects/PROJECT_ID/topics/mytopic1",
          ...
        },
        {
          "name": "projects/PROJECT_ID/topics/mytopic2",
          ...
        }
      ]
    }
    

    C++

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung C++ in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    namespace pubsub = ::google::cloud::pubsub;
    [](pubsub::TopicAdminClient client, std::string const& project_id) {
      int count = 0;
      for (auto& topic : client.ListTopics(project_id)) {
        if (!topic) throw std::move(topic).status();
        std::cout << "Topic Name: " << topic->name() << "\n";
        ++count;
      }
      if (count == 0) {
        std::cout << "No topics found in project " << project_id << "\n";
      }
    }

    C#

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung C# in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    
    using Google.Api.Gax.ResourceNames;
    using Google.Cloud.PubSub.V1;
    using System.Collections.Generic;
    
    public class ListProjectTopicsSample
    {
        public IEnumerable<Topic> ListProjectTopics(string projectId)
        {
            PublisherServiceApiClient publisher = PublisherServiceApiClient.Create();
            ProjectName projectName = ProjectName.FromProject(projectId);
            IEnumerable<Topic> topics = publisher.ListTopics(projectName);
            return topics;
        }
    }

    Go

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Go in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    import (
    	"context"
    	"fmt"
    
    	"cloud.google.com/go/pubsub"
    	"google.golang.org/api/iterator"
    )
    
    func list(projectID string) ([]*pubsub.Topic, error) {
    	// projectID := "my-project-id"
    	ctx := context.Background()
    	client, err := pubsub.NewClient(ctx, projectID)
    	if err != nil {
    		return nil, fmt.Errorf("pubsub.NewClient: %w", err)
    	}
    	defer client.Close()
    
    	var topics []*pubsub.Topic
    
    	it := client.Topics(ctx)
    	for {
    		topic, err := it.Next()
    		if err == iterator.Done {
    			break
    		}
    		if err != nil {
    			return nil, fmt.Errorf("Next: %w", err)
    		}
    		topics = append(topics, topic)
    	}
    
    	return topics, nil
    }
    

    Java

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Java in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    
    import com.google.cloud.pubsub.v1.TopicAdminClient;
    import com.google.pubsub.v1.ProjectName;
    import com.google.pubsub.v1.Topic;
    import java.io.IOException;
    
    public class ListTopicsExample {
      public static void main(String... args) throws Exception {
        // TODO(developer): Replace these variables before running the sample.
        String projectId = "your-project-id";
    
        listTopicsExample(projectId);
      }
    
      public static void listTopicsExample(String projectId) throws IOException {
        try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
          ProjectName projectName = ProjectName.of(projectId);
          for (Topic topic : topicAdminClient.listTopics(projectName).iterateAll()) {
            System.out.println(topic.getName());
          }
          System.out.println("Listed all topics.");
        }
      }
    }

    Node.js

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Node.js in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    // Imports the Google Cloud client library
    const {PubSub} = require('@google-cloud/pubsub');
    
    // Creates a client; cache this for further use
    const pubSubClient = new PubSub();
    
    async function listAllTopics() {
      // Lists all topics in the current project
      const [topics] = await pubSubClient.getTopics();
      console.log('Topics:');
      topics.forEach(topic => console.log(topic.name));
    }

    PHP

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung PHP in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub PHP API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    use Google\Cloud\PubSub\PubSubClient;
    
    /**
     * Lists all Pub/Sub topics.
     *
     * @param string $projectId  The Google project ID.
     */
    function list_topics($projectId)
    {
        $pubsub = new PubSubClient([
            'projectId' => $projectId,
        ]);
        foreach ($pubsub->topics() as $topic) {
            printf('Topic: %s' . PHP_EOL, $topic->name());
        }
    }

    Python

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Python in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    from google.cloud import pubsub_v1
    
    # TODO(developer)
    # project_id = "your-project-id"
    
    publisher = pubsub_v1.PublisherClient()
    project_path = f"projects/{project_id}"
    
    for topic in publisher.list_topics(request={"project": project_path}):
        print(topic)

    Ruby

    Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung Ruby in der Pub/Sub-Kurzanleitung unter Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.

    Um sich bei Pub/Sub zu authentifizieren, richten Sie Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    
    pubsub = Google::Cloud::Pubsub.new
    
    topics = pubsub.topics
    
    puts "Topics in project:"
    topics.each do |topic|
      puts topic.name
    end

    Standardmäßig werden maximal 100 Ergebnisse pro Abfrage zurückgegeben. Mit dem Parameter für die Seitengröße können Sie einen Alternativwert von bis zu 1.000 angeben.

    Themen im Blick behalten

    Sie können Themen innerhalb von Pub/Sub überwachen.

    Nächste Schritte

    • Wählen Sie den Abotyp für Ihr Thema aus.

    • Erstellen Sie ein Abo für Ihr Thema.

    • Erstellen oder ändern Sie ein Thema mit der gcloud CLI.

    • Erstellen oder ändern Sie ein Thema mit REST APIs.