1

Schnelle Frage: Wenn ich Nachricht von PubSub Abonnement über Kommandozeilen-Tool ziehengcloud Beta PubSub Pullabonnements Format

gcloud beta pubsub subscriptions pull MY_SUB 

Ich erhalte eine Tabelle mit (alle Details und) Daten als String (bereits decodiert) aber ich will, es zu benutzen, damit ich tat:

gcloud beta pubsub subscriptions pull MY_SUB --format=json 

als ich eine json mit (alle Details) empfangen, aber die Daten codiert ist.

Es gibt eine Möglichkeit, es mit Formatierung zu parsen?

Beispiel Verlag Nachricht:

gcloud beta pubsub topics publish myTopic "Topic Message" --attribute=Ai=A,Bee=B 

NO-FORMATTING_RETURN

─────────────┬─────────────────┬────────────────┬───────────────────────── 

    ────────────────────────────────────────────────────────────────────────── 
    ─────────────────────────────────────────────────────────────┐ 
    │  DATA │ MESSAGE_ID │ ATTRIBUTES │                    
    ACK_ID                    
    │ 

    ├─────────────┼─────────────────┼────────────────┼──────────────────────── 

    ────────────────────────────────────────────────────────────────────────── 
    ──────────────────────────────────────────────────────────────┤ 
    │ Topic Message │ 122122177601805 │ Ai=A Bee=B │ ACK_ID... │ 

    └─────────────┴─────────────────┴────────────────┴──────────────────────── 

    ────────────────────────────────────────────────────────────────────────── 
    ──────────────────────────────────────────────────────────────┘ 

FORMATIERUNG

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

Antwort

0

Sie sind auf dem richtigen Weg mit dem Einsatz von the --format argument, aber Sie müssen Verwenden Sie projections, um die Daten zu dekodieren. In diesem Fall müssen Sie die Projektion decode() verwenden. So können Sie denselben Befehl mit denselben Daten ausführen, außer dass die Daten der Nachricht base64-decodiert sind.

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" 
    } 
    } 
]