Nachricht in einem Pub/Sub-Thema veröffentlichen

Sie können einen Workflow-Connector verwenden, um Pub/Sub-Vorgänge zu unterstützen, einschließlich des Veröffentlichens von Nachrichten in einem Pub/Sub-Thema.

Ein Pub/Sub-Thema ist eine Ressource, an die Nachrichten von Publishern gesendet werden. Ein Abo stellt den Stream von Nachrichten eines Themas dar, die an die abonnierende Anwendung gesendet werden sollen. Mehr zu Pub/Sub

Nachrichten veröffentlichen

Sobald ein Pub/Sub-Thema und ein Abo für dieses Thema erstellt wurden, können Sie einen Workflow erstellen, der eine Nachricht zu diesem Thema veröffentlicht:

YAML

- init:
    assign:
      - project: '${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}'
      - topic: TOPIC_ID
      - subscription: SUBSCRIPTION_ID
      - message:
          hello: world
      - base64Msg: '${base64.encode(json.encode(message))}'
- publish_message_to_topic:
    call: googleapis.pubsub.v1.projects.topics.publish
    args:
      topic: '${"projects/" + project + "/topics/" + topic}'
      body:
        messages:
          - data: '${base64Msg}'

JSON

[
{
  "init": {
    "assign": [
      {
        "project": "${sys.get_env(\"GOOGLE_CLOUD_PROJECT_ID\")}"
      },
      {
        "topic": "TOPIC_ID"
      },
      {
        "subscription": "SUBSCRIPTION_ID"
      },
      {
        "message": {
          "hello": "world"
        }
      },
      {
        "base64Msg": "${base64.encode(json.encode(message))}"
      }
    ]
  }
},
{
  "publish_message_to_topic": {
    "call": "googleapis.pubsub.v1.projects.topics.publish",
    "args": {
      "topic": "${\"projects/\" + project + \"/topics/\" + topic}",
      "body": {
        "messages": [
          {
            "data": "${base64Msg}"
          }
        ]
      }
    }
  }
}
]

Ersetzen Sie Folgendes:

  • TOPIC_ID: die ID oder die voll qualifizierte Kennung für das Pub/Sub-Thema.

  • SUBSCRIPTION_ID: die ID oder die voll qualifizierte Kennung für das Pub/Sub-Abo.

Nachrichten werden abgerufen

Sie können einen Eventarc-Trigger erstellen, der ein Pub/Sub-Thema mit einem Workflow-Ereignisempfänger verbindet. Zum Generieren eines Ereignisses wird eine Nachricht in einem Pub/Sub-Thema veröffentlicht. Das Ereignis wird als Laufzeitargument an den Zielworkflow übergeben. Weitere Informationen finden Sie unter Workflow mit Ereignissen oder Pub/Sub-Nachrichten auslösen.

Sie können auch einen Workflow erstellen, der die Pub/Sub-Nachricht abruft. Im folgenden Beispiel wartet der Workflow auf die Veröffentlichung der Nachricht mithilfe von Abfragen.

YAML

- pullMessage:
    call: googleapis.pubsub.v1.projects.subscriptions.pull
    args:
        subscription: '${"projects/" + project + "/subscriptions/" + subscription}'
        body:
            maxMessages: 1
    result: m
- checkState:
    switch:
    - condition: ${m.receivedMessages[0].message.data != ""}
      next: outputMessage
- wait:
    call: sys.sleep
    args:
        seconds: 60
    next: pullMessage
- outputMessage:
    return: '${json.decode(base64.decode(m.receivedMessages[0].message.data))}'

JSON

  [
    {
      "pullMessage": {
        "call": "googleapis.pubsub.v1.projects.subscriptions.pull",
        "args": {
          "subscription": "${\"projects/\" + project + \"/subscriptions/\" + subscription}",
          "body": {
            "maxMessages": 1
          }
        },
        "result": "m"
      }
    },
    {
      "checkState": {
        "switch": [
          {
            "condition": "${m.receivedMessages[0].message.data != \"\"}",
            "next": "outputMessage"
          }
        ]
      }
    },
    {
      "wait": {
        "call": "sys.sleep",
        "args": {
          "seconds": 60
        },
        "next": "pullMessage"
      }
    },
    {
      "outputMessage": {
        "return": "${json.decode(base64.decode(m.receivedMessages[0].message.data))}"
      }
    }
  ]