2017-09-02 2 views
0

Ich habe ein Problem beim Abrufen der "MyHeaderValue" während der Insert-Anweisung unten mit Camel/Spring Boot. Wenn ich das Programm laufen sehe ich auf der Konsole "Verarbeitete Wert von Kopfzeile ist: eins", aber ich erhalte eine Ausnahmefehler Kamel Austausch Lieferung Ausnahme. Der Grund für die Expectation ist der ": #myHeaderValue" wird in der folgenden Abfrage nicht ausgefüllt. Wenn ich Camel verstehe, dachte ich, der Header bleibe bestehen und werde an die Endpunkte weitergegeben.Camel Spring Boot - Exchange-Problem

Bitte teilen Sie mir mit, wie ich den #myHeaderValue an den Endpunkt der Eingabe übergeben kann.

springBootVersion: 1.5.4.RELEASE Kamel: 2.19.1

from("sql:SELECT columnOne, columnTwo from t_item" 
      + "?consumer.initialDelay=3000" 
      + "&consumer.delay=3000" 
      + "&outputClass=mypackage.model.Item") 
     .process(itemProcessor) 
     .log("Processed value from header is : ${header.myHeaderValue}") 
     .log("insert into t_item(columnOne, columnTwo) VALUES(${header.myHeaderValue}, 'two'") 
     .to("sql:insert into t_item(columnOne) SELECT 'data' FROM t_store whhere header = :#myHeaderValue") 
     .log("Row inserted") 
     .end(); 

// von itemProcessor

@Override 
public void process(Exchange exchange) throws Exception { 
    exchange.getIn().setHeader("myHeaderValue", "one"); 
} 
+0

Sie sollten höchstwahrscheinlich headers.myHeaderValue schreiben. Beachten Sie das "s" in Kopfzeilen. –

Antwort

0

fand ich, dass, wenn ich eine komplexere (INSERT verwendet ... SELECT) Aussage, es scheitert, also nehme ich an, dass camel INSERT ... SELECT nicht unterstützt. Das heißt, ich konnte meinen Code zu einer vereinfachten Einfügeabfrage ändern. Alles gesagt, Kamel bekam die Header der Anfrage war das Problem.

.to ("sql: in t_item einfügen (columnOne, columnTwo) VALUES (: # myHeaderValue, 'two')");