Publicar un mensaje en un tema de Pub/Sub (original) (raw)

Puedes usar un conector de Workflows para admitir operaciones de Pub/Sub, como publicar mensajes en un tema de Pub/Sub.

Un tema de Pub/Sub es un recurso al que los editores envían mensajes. Una suscripción representa el flujo de mensajes de un tema que se van a enviar a la aplicación suscriptora.Más información sobre Pub/Sub

Publicar mensajes

Una vez que se hayan creado un tema de Pub/Sub y una suscripción a ese tema, puedes crear un flujo de trabajo que publique un mensaje en ese tema:

YAML

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

Haz los cambios siguientes:

Extraer mensajes

Puedes crear un activador de Eventarc que conecte un tema de Pub/Sub a un receptor de eventos de Workflows. Se publica un mensaje en un tema de Pub/Sub para generar un evento, y el evento se transfiere como argumento de tiempo de ejecución al flujo de trabajo de destino. Para obtener más información, consulta el artículo Activar un flujo de trabajo con eventos o mensajes de Pub/Sub.

También puedes crear un flujo de trabajo que extraiga el mensaje de Pub/Sub. En el siguiente ejemplo, el flujo de trabajo espera a que se publique el mensaje mediante sondeo.

YAML

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