Zum Inhalt springen

Veröffentlichen und Empfangen von Google Pub/Sub-Nachrichten in Jitterbit Studio

Einführung

Google Cloud Pub/Sub ist ein verwalteter Messaging-Service, der Systeme entkoppelt, indem er Nachrichten über Topics und Subscriptions weiterleitet. Ein Publisher schreibt Nachrichten in ein Topic; ein oder mehrere Subscriber empfangen diese Nachrichten über Subscriptions, die an dieses Topic angehängt sind.

Der Google Pub/Sub Connector bietet Aktivitäten für beide Seiten dieses Musters:

  • Veröffentlichung: Verwenden Sie die Aktivität Nachricht veröffentlichen, um Nachrichten von einer Studio-Operation aus in ein Pub/Sub-Topic zu schreiben. Dies ist beispielsweise der Fall, wenn ein Datensatz in einem Quellsystem erstellt wird und nachgelagerte Services benachrichtigt werden müssen.
  • Empfang: Verwenden Sie die Aktivität Nachricht abrufen, um eine Subscription auf ausstehende Nachrichten zu prüfen, und nutzen Sie dann die Aktivität Nachricht bestätigen, um zu bestätigen, dass jede Nachricht verarbeitet wurde.

Dieses Handbuch behandelt beide Muster. Für ereignisgesteuerten Nachrichtenkonsum (wobei Studio kontinuierlich abhört statt abzurufen), siehe die Referenz zur Listen Message-Aktivität, die einen privaten Agent-Cluster mit spezifischer Netzwerkkonfiguration erfordert.

In diesem Handbuch wird Folgendes vorausgesetzt:

  • Ein Google Cloud-Dienstkonto mit aktivierter Pub/Sub-API und zugewiesenen entsprechenden Rollen, wie in Google Pub/Sub-Voraussetzungen beschrieben.
  • Das Topic und die Subscription existieren bereits in Google Pub/Sub.

Teil 1: Google Pub/Sub-Verbindung konfigurieren

  1. Öffnen Sie in Studio Ihr Projekt und gehen Sie zum Tab Projekt-Endpunkte und Connectors in der Designkomponentenpalette.

  2. Klicken Sie auf den Google Pub/Sub Connector, um die Verbindungskonfiguration zu öffnen.

  3. Verbindungsname: Geben Sie einen eindeutigen Namen ein (z. B. Google Pub/Sub). Der Name darf keine Schrägstriche oder Doppelpunkte enthalten.

  4. Project ID: Geben Sie den project_id-Wert aus der JSON-Datei mit den Anmeldedaten des Dienstkontos ein.

  5. Client Email: Geben Sie den client_email-Wert aus der JSON-Anmeldedatei ein.

  6. Private Key String: Geben Sie den private_key-Wert aus der JSON-Anmeldedatei ein, formatiert als:

    -----BEGIN PRIVATE KEY-----<private_key>-----END PRIVATE KEY-----
    

    Hinweis

    Der private_key-Wert in der JSON-Datei verwendet \n zur Darstellung von Zeilenumbrüchen. Ersetzen Sie jeden \n durch einen tatsächlichen Zeilenumbruch, bevor Sie ihn in dieses Feld einfügen. Wenn der Schlüssel mit literalen \n-Zeichen eingefügt wird, gibt der Verbindungstest einen Invalid PKCS#8 data-Fehler zurück.

  7. Klicken Sie auf Test, um die Verbindung zu überprüfen.

  8. Klicken Sie auf Änderungen speichern.

Teil 2: Eine Nachricht in ein Topic veröffentlichen

Die Aktivität Nachricht veröffentlichen ist eine Zielaktivität. Verwenden Sie sie am Ende einer Transformation, um Daten als Nachricht in ein Pub/Sub-Topic zu schreiben.

Entwurfsmuster

%%{init: {"themeVariables": {"lineColor": "#6b7280", "edgeLabelBackground": "#f5f5f5"}}}%% flowchart LR A[Source activity] --> B[Transformation] --> C[Publish Message activity]

Die Operation beginnt mit einer Quellaktivität, die die zu veröffentlichenden Daten bereitstellt. Dies kann eine beliebige Aktivität sein, die Daten zurückgibt, z. B. eine Datenbank oder Salesforce Query-Aktivität, eine Dateiquelle oder die Antwort eines anderen Connectors. Die Transformation in Schritt 2 ordnet diese Quelldaten dem Nachricht veröffentlichen-Request zu. Die folgenden Schritte gehen davon aus, dass in der Operation bereits eine Quellaktivität vorhanden ist. Weitere Informationen zum Einrichten von Quellaktivitäten finden Sie in der Dokumentation des entsprechenden Connectors.

Schritt 1: Aktivität „Nachricht veröffentlichen" konfigurieren

  1. Ziehen Sie auf der Designoberfläche eine Aktivität Nachricht veröffentlichen aus der Google Pub/Sub-Verbindung auf die Arbeitsfläche.

  2. Name: Geben Sie einen aussagekräftigen Namen ein (z. B. Publish Order Created).

  3. Topic wählen: Wählen Sie aus, wie Sie das Topic angeben:

    • Vorhandenes Topic wählen: Wählen Sie aus einer Liste von Topics aus, die aus Ihrem Google Cloud-Projekt geladen wurden. Erfordert die pubsub.topics.list-Berechtigung für das Dienstkonto.
    • Topic manuell eingeben: Geben Sie den Topic-Namen direkt ein. Verwenden Sie dies, wenn der Topic-Name dynamisch ist oder das Dienstkonto keine Listberechtigung hat.
  4. Thema: Geben Sie den Themennamen ein oder wählen Sie ihn aus (z. B. order-events).

  5. Klicken Sie auf Weiter, überprüfen Sie das Request-Schema und klicken Sie auf Fertig.

Schritt 2: Transformation zuordnen

  1. Fügen Sie einen Transformation-Schritt zwischen der Quellaktivität und der Nachricht veröffentlichen-Aktivität hinzu.

  2. Öffnen Sie die Transformation. Ordnen Sie die Datenfelder aus der Quelle dem Request-Schema für „Nachricht veröffentlichen" zu.

    Das Request-Schema enthält einen body-Knoten für die Nachricht-Payload. Wenn das Thema ein konfiguriertes Schema in Google Pub/Sub hat, spiegelt der body-Knoten dieses Schema wider. Wenn kein Schema konfiguriert ist, akzeptiert body einen Zeichenfolgenwert. Serialisieren Sie Ihre Daten vor der Zuordnung zu JSON:

    JSONStringify($source_data)
    
  3. Stellen Sie die Operation bereit und führen Sie sie aus, um eine Nachricht zu veröffentlichen.

Teil 3: Nachrichten aus einem Abonnement empfangen und bestätigen

Das Empfangen von Nachrichten erfordert zwei Operationen: eine zum Abrufen ausstehender Nachrichten aus einem Abonnement und eine zum Bestätigen nach der Verarbeitung. Nicht bestätigte Nachrichten werden von Pub/Sub nach Ablauf der Bestätigungsfrist erneut zugestellt.

Entwurfsmuster

%%{init: {"themeVariables": {"lineColor": "#6b7280", "edgeLabelBackground": "#f5f5f5"}}}%% flowchart LR A[Get Message activity] --> B[Transformation] --> C[Target activity] B -->|On Success| D[Transformation] --> E[Acknowledge Message activity]

Schritt 1: Konfigurieren Sie die Aktivität „Nachricht abrufen"

  1. Ziehen Sie auf der Entwurfsfläche eine Nachricht abrufen-Aktivität aus der Google Pub/Sub-Verbindung auf die Entwurfsfläche.

  2. Name: Geben Sie einen aussagekräftigen Namen ein (z. B. Get Order Events).

  3. Abonnement auswählen: Wählen Sie Bestehendes Abonnement auswählen oder Abonnement manuell eingeben und geben Sie dann den Abonnementnamen ein oder wählen Sie ihn aus.

  4. Anzahl der Nachrichten: Geben Sie die Anzahl der Nachrichten ein, die pro Operationsausführung abgerufen werden sollen (1–100, Standard 1). Stellen Sie dies auf die Batch-Größe ein, die Ihre nachgelagerte Verarbeitung verarbeiten kann.

  5. Bestätigungsfrist in Sekunden: Geben Sie optional an, wie lange Pub/Sub die Nachricht speichert, bevor sie erneut zugestellt wird, wenn sie nicht bestätigt wird (1–600 Sekunden). Lassen Sie das Feld leer, um die für das Abonnement konfigurierte Frist zu verwenden.

  6. Klicken Sie auf Weiter, überprüfen Sie das Response-Schema und klicken Sie auf Fertig.

Schritt 2: Verarbeiten Sie die Nachrichten in einer Transformation

  1. Fügen Sie einen Transformation-Schritt nach der Nachricht abrufen-Aktivität hinzu.

  2. Öffnen Sie die Transformation und ordnen Sie die Nachrichtenfelder aus dem Response-Schema dem Ziel zu.

    Das Response-Schema enthält ein messageId-Feld und ein body-Feld für die Nachricht-Payload. Wenn der Nachrichtentext JSON ist, deserialisieren Sie ihn in der Transformation:

    JSONParser(Source.body)
    

    Speichern Sie die messageId (oder das ackId-Feld) in einer globalen Variablen, damit der Bestätigungsschritt darauf verweisen kann:

    $ack_id = Source.ackId;
    

Schritt 3: Konfigurieren Sie die Aktivität „Nachricht bestätigen"

Bestätigen Sie die Nachrichten nach der Verarbeitung, um eine Neulieferung zu verhindern.

  1. Ziehen Sie auf der Entwurfsfläche eine Nachricht bestätigen-Aktivität aus der Google Pub/Sub-Verbindung auf die Entwurfsfläche.

  2. Name: Geben Sie einen aussagekräftigen Namen ein (z. B. Acknowledge Order Events).

  3. Abonnement auswählen: Wählen Sie das gleiche Abonnement aus, das in der Nachricht abrufen-Aktivität verwendet wurde.

  4. Klicken Sie auf Weiter, überprüfen Sie das Schema und klicken Sie auf Fertig.

  5. Fügen Sie einen Transformation-Schritt zwischen der Verarbeitungstransformation und der Nachricht bestätigen-Aktivität hinzu. Ordnen Sie den in ack_id gespeicherten ackId-Wert dem Bestätigungsanfrage-Schema zu.

  6. Konfigurieren Sie in den Operationseinstellungen die Nachricht bestätigen-Operation so, dass sie Bei Erfolg der Verarbeitungsoperation ausgeführt wird.

Warnung

Bestätigen Sie Nachrichten immer nach erfolgreicher Verarbeitung. Wenn die Operation fehlschlägt, bevor bestätigt wird, stellt Pub/Sub die Nachricht nach Ablauf der Bestätigungsfrist erneut zu. Gestalten Sie Ihre Verarbeitungslogik so idempotent, dass erneut zugestellte Nachrichten keine doppelten Nebenwirkungen verursachen.

Integration überprüfen

Veröffentlichung: Senden Sie einen Testdatensatz durch die Operation und überprüfen Sie in der Google Cloud Console (Pub/Sub > Topics > [topic name]), dass die Nachrichtenanzahl gestiegen ist. Alternativ können Sie das Get Message-Pattern verwenden, um die Nachricht abzurufen und die Nutzlast zu bestätigen.

Empfang: Veröffentlichen Sie eine Testnachricht zum Thema des Abonnements über die Google Cloud Console (Pub/Sub > Topics > [topic name] > Publish Message). Führen Sie die Get Message-Operation aus und überprüfen Sie die Operationsprotokolle, um zu bestätigen, dass die Nachricht abgerufen wurde. Stellen Sie sicher, dass das Ziel mit den erwarteten Daten geschrieben wurde, und bestätigen Sie dann, dass die Nachricht nicht mehr im Abonnement angezeigt wird (was eine erfolgreiche Bestätigung anzeigt).

Wenn der Verbindungstest fehlschlägt, überprüfen Sie, dass das Dienstkonto die korrekten Rollen zugewiesen hat, wie in Google Pub/Sub-Voraussetzungen beschrieben.