Publier un message dans un sujet Pub/Sub

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 doivent être livrés à l'application d'abonnement. En savoir plus sur Pub/Sub

Publier des messages

Une fois qu'un sujet Pub/Sub et un abonnement à ce sujet ont été vous pouvez créer créer un workflow qui publie un message dans 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 de le sujet Pub/Sub.

  • SUBSCRIPTION_ID: ID ou identifiant complet pour 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 un sujet Pub/Sub pour générer un événement, qui est transmis en tant que un argument d'exécution au workflow de destination. Pour en savoir plus, consultez Déclenchez 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 de l'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))}"
      }
    }
  ]