Vous pouvez utiliser un connecteur Workflows pour prendre en charge les opérations Pub/Sub, y compris la publication de messages dans un sujet Pub/Sub.
Un sujet Pub/Sub est une ressource à laquelle les éditeurs envoient des messages. Un abonnement représente le flux de messages d'un sujet à distribuer dans l'application d'abonnement. En savoir plus sur Pub/Sub
Publier des messages
Une fois un sujet Pub/Sub et un abonnement à ce sujet créés, vous pouvez créer un workflow qui publie un message sur ce sujet:
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}" } ] } } } } ]
Remplacez les éléments suivants :
TOPIC_ID
: ID ou identifiant complet du sujet Pub/Sub.SUBSCRIPTION_ID
: ID ou identifiant complet de l'abonnement Pub/Sub.
Extraire des messages
Vous pouvez créer un déclencheur Eventarc qui connecte un sujet Pub/Sub à un récepteur d'événements Workflows. Un message est publié dans un sujet Pub/Sub pour générer un événement, qui est transmis en tant qu'argument d'exécution au workflow de destination. Pour en savoir plus, consultez la page Déclencher un workflow avec des événements ou des messages Pub/Sub.
Vous pouvez également créer un workflow qui extrait le message Pub/Sub. Dans l'exemple suivant, le workflow attend la publication du message à l'aide d'une interrogation.
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))}" } } ]