Workflows 커넥터를 사용해서 Pub/Sub 주제에 대한 메시지 게시를 포함하여 Pub/Sub 작업을 지원할 수 있습니다.
Pub/Sub 주제는 게시자가 전송하는 메시지에 대한 리소스입니다. 구독은 구독 애플리케이션으로 전달할 주제의 메시지 스트림을 나타냅니다. Pub/Sub 자세히 알아보기
메시지 게시
Pub/Sub 주제 및 해당 주제에 대한 구독이 생성된 다음 메시지를 이 주제에 게시하는 워크플로를 만들 수 있습니다.
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}" } ] } } } } ]
다음을 바꿉니다.
TOPIC_ID
: Pub/Sub 주제에 대한 ID 또는 정규화된 식별자입니다.SUBSCRIPTION_ID
: Pub/Sub 구독에 대한 ID 또는 정규화된 식별자입니다.
메시지 가져오기
Pub/Sub 주제를 Workflows 이벤트 수신자에 연결하는 Eventarc 트리거를 만들 수 있습니다. 메시지를 Pub/Sub 주제에 게시하여 이벤트를 생성합니다. 이벤트는 대상 워크플로에 런타임 인수로 전달됩니다. 자세한 내용은 이벤트 또는 Pub/Sub 메시지로 워크플로 트리거를 참조하세요.
또한 Pub/Sub 메시지를 가져오는 워크플로를 만들 수 있습니다. 다음 예시에서는 워크플로가 폴링을 사용하여 메시지가 게시될 때까지 기다립니다.
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))}" } } ]