gcloud beta pubsub订阅提取格式

Uda*_*Uda 5 beta subscriptions publish-subscribe google-cloud-platform gcloud

快速提问:当我通过命令行工具从pubsub订阅中提取消息时

gcloud beta pubsub subscriptions pull MY_SUB
Run Code Online (Sandbox Code Playgroud)

我正在获取带有(所有详细信息和)数据作为字符串的表(已经解码),但是我想使用它,所以我这样做了:

gcloud beta pubsub subscriptions pull MY_SUB --format=json
Run Code Online (Sandbox Code Playgroud)

比我收到带有(所有详细信息)的json,但数据已编码。

有没有一种方法可以将其与格式一起解析?

发布消息的示例:

gcloud beta  pubsub topics publish myTopic "Topic Message" --attribute=Ai=A,Bee=B
Run Code Online (Sandbox Code Playgroud)

NO-FORMATTING_RETURN

  ??????????????????????????????????????????????????????????????????????????

  ??????????????????????????????????????????????????????????????????????????
    ??????????????????????????????????????????????????????????????
    ?     DATA    ?    MESSAGE_ID   ?   ATTRIBUTES   ?                                                                             
    ACK_ID                                                                             
    ?

  ??????????????????????????????????????????????????????????????????????????

  ??????????????????????????????????????????????????????????????????????????
     ???????????????????????????????????????????????????????????????
     ? Topic Message ? 122122177601805 ? Ai=A Bee=B  ? ACK_ID... ?

  ??????????????????????????????????????????????????????????????????????????

  ??????????????????????????????????????????????????????????????????????????
    ???????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

格式

[
{
"ackId": "ACK_ID..",
"message": {
  "attributes": {
    "Ai": "A",
      "Bee": "B"
    },
     "data": "SGVsbG8gVG9waWM=",
     "messageId": "122121955409996",
     "publishTime": "2017-05-11T10:26:54.143Z"
    }
}
]
Run Code Online (Sandbox Code Playgroud)

Tec*_*ium 6

你是在正确的轨道与使用上--format争论,但你需要使用的预测,以便对数据进行解码。在这种情况下,您需要使用decode()投影。除了对消息的数据进行base64解码外,这是对相同数据执行相同命令的方法。

gcloud beta pubsub subscriptions pull MY_SUB --format="json(ackId, message.attributes, message.data.decode(\"base64\"), 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"
    }
  }
]
Run Code Online (Sandbox Code Playgroud)