Apache Strahl mit Message - wie bekomme ich Werte von Karte <Wert, Wert>?

stimmen
1

Innerhalb eines Apache Strahl verwandeln Ich kann pub / sub - Werte (in Message Format) erfolgreich zu transformieren , die ich von Google Cloud Pub / Sub in einer Karte von Message lesen ValueObjekte wie folgt aus :

    @ProcessElement
    public void processElement(ProcessContext c) 
    {
        Map<Value, Value> map = MessagePack.newDefaultUnpacker(c.element().getPayload()).unpackValue().asMapValue().map();

Wenn ich überprüfen mapkann ich sehen , wie folgt vor :

Geben

Wenn ich dann versuchen, einen Wert wie diese zu bekommen es gibt immer null:

map.get(Tz)

Wie bekomme ich einen Wert? Muß ich die Werte in einer anderen Art und Weise zu verändern, oder brauche ich einen anderen Weg, um sie zum Abrufen?

Veröffentlicht am 07/11/2018 um 23:35
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
2

Die Kartenschlüssel sind Message ValueObjekte, so brauchte ich dies zu tun , um den Schlüssel zu verweisen, und gibt die Werte als Strings:

import org.msgpack.value.ValueFactory;

map.get(ValueFactory.newString("Tz")).toString()

Siehe auch In Message, Fehler beim Wert von MapValue bekommen .. Bitte helfen Sie mir (die Lösung funktionierte nicht in meinem Fall, aber es gibt einige Vorschläge , dort mit verschiedenen Arten handeln , die in einem verwendet werden können Map)

Beantwortet am 07/11/2018 um 23:50
quelle vom benutzer

stimmen
2

Die Karte ist Karte, so dass der Schlüssel ist ein Wertobjekt, aber Sie werden mit einem String s die Taste, wenn Sie map.get tun ( „Tz“)

Können Sie ein Wertobjekt unter Verwendung von Tz und Versuch erstellen, die auf diesem Wert des Objekts zu erhalten basiert?

Beantwortet am 07/11/2018 um 23:43
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more