2017-11-17 6 views
0

In Pubsub von Google Cloud kann ich sehen, dass beim Erstellen eines neuen Themas, muss ich eine neue Nachricht erstellen. Kann ich dort eine Protobuf-Datei speichern, anstatt die gesamte Nachrichtenstruktur in Schlüssel-Wert-Paaren schreiben zu müssen? Für den Protobuf-Code, der geschrieben werden soll, meine ich this. Wenn der Protobuf nicht auf den gcloud Pubsub gesetzt werden soll, wie kann ich ihn mit dem Grpc Client verwenden?wie Protobuf-Datei zum Thema in gcloud Pubsub hinzufügen?

+0

Was meinst du mit "beim Erstellen eines neuen Themas, muss ich eine neue Nachricht erstellen" und dass Sie "stattdessen eine Protobuf-Datei speichern möchten?" CreateSubscription ist Teil der Pub/Sub-API, die Sie entweder über die Clientbibliothek, gRPC oder HTTP aufrufen müssen. Was ist die protobuf-Datei, die Sie speichern möchten? Meinst du, wenn du eine Nachricht über die Veröffentlichungs-API an ein Thema schickst? –

+0

Ja das ist was ich meinte. Ist es möglich, ein protobufbasiertes Format für die Nachricht zu erstellen, so dass es einfach wird, Daten einfach auszufüllen und die Nachricht hinsichtlich der Struktur strenger zu machen. – kneelb4darth

Antwort

1

Wenn Sie eine ProtoBuf-Nachricht über die API Publish senden möchten, sollten Sie dies tun, indem Sie sie in eine ByteString serialisieren und sie dann als das Feld data der Nachricht festlegen. wenn Sie die Java client library Zum Beispiel verwenden und eine Publisher und obj einiger protobuf Art haben, dann könnten Sie Folgendes tun:

PubsubMessage message = PubsubMessage.newBuilder() 
    .setData(obj.toByteString()) 
    .build(); 
ApiFuture<String> response = publisher.publish(message); 
... 

Auf der Seite abonnieren, würden Sie die Nachricht in Ihrem MessageReceiver entschlüsseln:

public void receiveMessage(PubsubMessage message, AckReplyConsumer consumer) { 
    ProtoBufMessage obj; 
    try { 
    obj = ProtoBufMessage.parseFrom(message.getData()); 
    } catch (Exception e) { 
    // Handle improperly encoded message 
    } 
    ... 
} 
Verwandte Themen