У меня есть рабочий процесс GCP, в котором мне нужно опубликовать сообщение публикации/подписки, содержащее данные И некоторые атрибуты. Это три шага, которые инициализируют некоторые параметры, создают карту атрибутов и затем публикуют сообщение:
- 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}
next: successfulRun
Рабочий процесс выполняется успешно, но публикует два сообщения: одно с данными, а другое с атрибутами. Глядя на документацию, я не вижу примеров, которые бы отправляли и то, и другое. Идея заключалась бы в том, чтобы опубликовать одно сообщение как с атрибутами, так и с данными.
Каждое тире под узлом сообщений представляет собой новое сообщение. Чтобы опубликовать как одно сообщение, поместите каждый атрибут под одним тире:
messages:
- data: '${base64Msg}'
attributes: ${notifyMap}