GCP Workflow发布Pub/Sub消息:如何单条消息携数据与属性
解决GCP Workflow中Pub/Sub单条消息同时包含数据与属性的问题
问题出在你调用Pub/Sub API时的messages数组结构:原代码里data和attributes是数组的两个独立元素,这会被解析成两条独立的Pub/Sub消息,一条仅包含数据,一条仅包含属性。要实现单条消息同时包含两者,需要将data和attributes放在同一个消息对象中。
修正后的工作流代码如下:
- initializeParameters: assign: - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} - outputFileName: '${input.outputFileName}' - pubsubMessage: filename: ${outputFileName} - base64Msg: '${base64.encode(json.encode(pubsubMessage))}' next: createNotifyMap - createNotifyMap: assign: - notifyMap: firstAttribute: "value" secondAttribute: "value" next: notifyBC - notifyBC: call: googleapis.pubsub.v1.projects.topics.publish args: topic: ${ "projects/" + projectId + "/topics/topicname" } body: messages: - data: '${base64Msg}' attributes: ${notifyMap} # 将attributes与data放在同一个消息对象下 next: successfulRun
关键修改:把attributes从独立的数组项,移到和data同一个-开头的对象内,这样就会生成一条同时包含数据和属性的Pub/Sub消息。
内容的提问来源于stack exchange,提问作者Jeffrey Van Laethem
相关产品推荐
相关产品推荐

