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))}" } } ]