Ich versuche, so zu einem json Struktur zu bereichern Nutzlast mit Tasten einigen Kopf- und konvertieren:Transform-Header und Nutzlast zu Json Knoten
{
"Header": { ["key" : "value", "key2": "value"]}
"Payload": { "attribute" : "value" }
}
Mein Gateway wie folgt konfiguriert ist:
@MessagingGateway
public static interface MailService {
@Gateway(requestChannel = "mail.input")
void sendMail(String body, @Headers Map<String,String> headers);
}
Hier ist mein Fluss:
@Bean
public IntegrationFlow errorFlow(){
return IntegrationFlows.from(recoveryChannel())
.transform("payload.failedMessage")
.enrichHeaders(c -> c.header(FileHeaders.FILENAME, "emailErrors.json"))
.handle(this.fileOutboundAdapter())
.get();
}
Wie könnte ich dieses Problem lösen?
Danke.
Das ist es, Artem ,, Ich bin sehr dankbar. Ist es möglich, die zwei Knoten umzukehren? Headers/Payload von Payload/Headers –
??? Was ist der Sinn? Sie sind Geschwister im Ziel-JSON. Nicht sicher, dass wir diese Reihenfolge tauschen können ... –
Sie würden einen kundenspezifischen Transformator benötigen, um die Nutzlast in eine Karte umzuwandeln; Wenn Sie eine 'LinkedHashMap' verwenden, würde Jackson wahrscheinlich in der Reihenfolge iterieren, in der Sie die Map erstellt haben (Sie können auch die Zeitstempel und ID-Header auf diese Weise vermeiden). Eine solche Reihenfolge ist jedoch nur für den "menschlichen" Konsum interessant. –