Ich habe zwei einfache Camel-Routen arbeiten zum Schreiben in eine JMS-Warteschlange und Lesen von ihm. Ich stelle ein serialisiertes Objekt in die Warteschlange. Ich bin in der Lage, es zu deserialisieren und zu json erfolgreich zu verdecken.Kamel-Routing basierend auf Objektwert
Weg zum Schreiben:
from("direct:message").to("jms:myqueu")
Mein Weg zum Lesen:
from("jms:myqueu")
.marshal()
.json(JsonLibrary.Gson).
.to("file://cc")
Jetzt möchte ich ein Feld innerhalb des Objekts und Route auf dieser Grundlage prüfen. Auch dieses Feld sollte nicht Teil des endgültigen JSON sein.
Kann ich den Wert innerhalb des Objekts und Route basierend darauf überprüfen (wie in andere Dateien schreiben?). Ich kann die Anmerkung im Pojo hinzufügen, um das Feld in der endgültigen JSON zu vermeiden
Ich dachte über das Konvertieren von Objekt in JSON, und dann an die Warteschlange zu senden. Dann kann ich jsonpath für bedingtes Routing verwenden. Aber wie kann ich ein Feld aus dem letzten JSON weglassen?
Danke. Genau das hatte ich vor. Aber ich bin verwirrt, wie man das Feld vom Objekt auswählt. Camel deserialisiert das Objekt und dann habe ich die json-Konvertierung hinzugefügt. Also muss ich das Feld zwischen ihnen überprüfen. Muss ich einen benutzerdefinierten Bean-Filter schreiben und ihn aufrufen? –
Keine Notwendigkeit. Sie können die einfache Methode camel verwenden, um die Getter-Methode Ihrer Bean aufzurufen. Beispiel: $ {body.getSomething} == 'XXXX' . Verwenden Sie diese in Kamel "When" -Klausel. –
In Java DSL, einfach ("$ {body.getSomething} == 'XXXX'") –