快速问题:当我通过命令行工具从公共订阅中提取消息时
gcloud beta pubsub subscriptions pull MY_SUB我得到了一个包含(所有细节和)数据的字符串(已经解码)的表,但是我想使用它,所以我这样做了:
gcloud beta pubsub subscriptions pull MY_SUB --format=json比我收到的json (所有细节)都要多,但是数据是编码的。
有一种方法可以用格式来解析它吗?
发布消息的示例:
gcloud beta pubsub topics publish myTopic "Topic Message" --attribute=Ai=A,Bee=B无格式返回
─────────────┬─────────────────┬────────────────┬─────────────────────────
──────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────┐
│ DATA │ MESSAGE_ID │ ATTRIBUTES │
ACK_ID
│
├─────────────┼─────────────────┼────────────────┼────────────────────────
──────────────────────────────────────────────────────────────────────────
──────────────────────────────────────────────────────────────┤
│ Topic Message │ 122122177601805 │ Ai=A Bee=B │ ACK_ID... │
└─────────────┴─────────────────┴────────────────┴────────────────────────
──────────────────────────────────────────────────────────────────────────
──────────────────────────────────────────────────────────────┘格式化
[
{
"ackId": "ACK_ID..",
"message": {
"attributes": {
"Ai": "A",
"Bee": "B"
},
"data": "SGVsbG8gVG9waWM=",
"messageId": "122121955409996",
"publishTime": "2017-05-11T10:26:54.143Z"
}
}
]发布于 2017-05-29 23:20:53
使用论据是正确的,但是您需要使用预测来解码数据。在这种情况下,您需要使用decode()投影。下面是如何使用相同的数据执行相同的命令,除非消息的数据是base64解码的。
gcloud beta pubsub subscriptions pull MY_SUB --format="json(ackId, message.attributes, message.data.decode(\"base64\").decode(\"utf-8\"), message.messageId, message.publishTime)"
[
{
"ackId": "QV5AEkw...D5-NTlF",
"message": {
"attributes": {
"Ai": "A",
"Bee": "B"
},
"data": "Topic Message",
"messageId": "127236468931635",
"publishTime": "2017-05-29T23:15:04.637Z"
}
}
]https://stackoverflow.com/questions/43914026
复制相似问题