Ereignisse aus Pub/Sub empfangen

Im Folgenden wird gezeigt, wie Sie einen Cloud Run for Anthos-Dienst in Google Cloud bereitstellen und dann mit Pub/Sub Ereignisse erstellen und an diesen Dienst senden.

Vorbereitung

Zum Ausführen dieser Aufgabe benötigen Sie einen Ereignis-Broker und Sie müssen wissen, in welchem Namespace er ausgeführt wird. Lesen Sie hier, wie Sie Events for Cloud Run for Anthos konfigurieren und einen Ereignis-Broker erstellen.

Wenn ein Ereignis-Broker ausgeführt wird, können Sie den Kubernetes-Namespace mit folgendem Befehl aufrufen:

kubectl get brokers -n NAMESPACE

Cloud Run for Anthos-Dienst zum Empfangen von Ereignissen bereitstellen

Stellen Sie einen Cloud Run for Anthos-Dienst bereit, der Ereignisse vom Ereignis-Broker empfängt.

So stellen Sie den Cloud Run for Anthos-Dienst bereit:

  1. Klonen Sie das Repository:

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/pubsub
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/pubsub
    

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/pubsub
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/pubsub
    

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/pubsub
    
  2. Erstellen Sie den Container und laden Sie ihn in Cloud Build hoch:

    gcloud builds submit \
      --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_FILENAME
    

    Dabei ist CLOUD_RUN_CONTAINER_FILENAME der Dateiname Ihres Containers.

  3. Stellen Sie das Container-Image für Cloud Run for Anthos bereit:

    gcloud run deploy CLOUD_RUN_SERVICE_NAME \
        --namespace=NAMESPACE \
        --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.

Wenn die Dienst-URL angezeigt wird, wurde sie erfolgreich bereitgestellt.

Trigger für Pub/Sub erstellen

  1. Pub/Sub-Thema erstellen

    gcloud pubsub topics create TOPIC_NAME
    
  2. Erstellen Sie mit --parameters topic=TOPIC_NAME und --target-service=CLOUD_RUN_SERVICE_NAME einen Trigger:

    gcloud beta events triggers create TRIGGER_NAME \
      --namespace NAMESPACE \
      --target-service=CLOUD_RUN_SERVICE_NAME \
      --type=google.cloud.pubsub.topic.v1.messagePublished \
      --source=CloudPubSubSource \
      --parameters topic=TOPIC_NAME
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker. TOPIC-NAME ist der Name des von Ihnen erstellten Pub/Sub-Themas und CLOUD_RUN_SERVICE_NAME ist der Name des Dienstes zum Empfangen von Ereignissen in Cloud Run for Anthos.

  3. Optional: Überprüfen Sie mit dem gcloud-Befehlszeilentool, ob der Trigger betriebsbereit ist:

    gcloud beta events triggers list \
      --target-service 'CLOUD_RUN_SERVICE_NAME' \
      --namespace NAMESPACE
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.

    Die Ausgabe sieht etwa so aus:

    TRIGGER           EVENT TYPE                                      TARGET
    trigger-name    google.cloud.pubsub.topic.v1.messagePublished   cloud-run-service
    

Ereignis generieren

  1. Veröffentlichen Sie eine Nachricht im Pub/Sub-Thema:

    gcloud pubsub topics publish TOPIC_NAME \
      --message "World"
    
  2. Überprüfen Sie das veröffentlichte Ereignis anhand der Logs des empfangenden Cloud Run for Anthos-Dienstes:

    kubectl logs \
      --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \
      -c user-container \
      -n NAMESPACE \
      --tail=100
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.

    Die Logs enthalten einen Eintrag, der in etwa so aussieht:

    Hello World! ID: 961750303502725
    

Bereinigen

Löschen Sie die in dieser Anleitung erstellten Ressourcen, um wiederkehrende Gebühren zu vermeiden.

  1. Löschen Sie den Trigger. Geben Sie dazu Folgendes ein:

    gcloud beta events triggers delete TRIGGER-NAME \
        --namespace NAMESPACE
    

    Dabei ist NAMESPACE derselbe Namespace wie für Ihren Ereignis-Broker.