Ich versuche einen Wert auf dem Camel Exchange zwischen einem Request - Response-Aufruf gegen einen QPID-Endpunkt zu speichern.Apache Camel - JMS-Header-Eigenschaften zwischen Request - Response kann nicht weitergegeben werden
Sie können aus meinem Code sehen, dass ich einen Header (und Eigenschaft) vor dem Aufruf des Endpunkts festlegen. Bei der Rückgabe sind die gleichen Header- und Property-Werte gleich null.
Ich möchte im Grunde eine Spur des Dateinamens und filePath zu halten, so dass ich die Ergebnisse in der gleichen Position schreiben
wirklich kämpfen mit diesem.
import org.apache.camel.builder.RouteBuilder;
import org.springframework.beans.factory.annotation.Value;
public class ProcessingRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
//@formatter:off
from("file:/home/molko/in/?recursive=true&include=.*.txt")
.log("File read from disk : ${file:name}")
.doTry()
.setHeader("JMSReplyTo", constant("response-1"; {create:always, node:{type:queue}}"))
.setHeader("JMSCorrelationID", constant(java.util.UUID.randomUUID().toString()))
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
final String fileParent = exchange.getIn().getHeader("CamelFileParent", String.class);
final String endPath = fileParent.substring(fileParent.lastIndexOf('/') + 1);
exchange.getIn().setHeader("endPath", endPath);
exchange.setProperty("endPath", endPath);
}
})
.to(amqp:request-1;{node:{type:queue}}?preserveMessageQos=true?exchangePattern=InOut")
.doCatch(Exception.class)
.log("Failed : ${file:name}")
.log("${exception.stacktrace}")
.stop();
from("amqp:response-1; {create:always, node:{type:queue}}")
.log("Received from qpid broker : ${date:now}")
.doTry()
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
byte[] response = exchange.getIn().getBody(byte[].class);
System.out.println("properties : " + exchange.getProperties());
System.out.println("headers : " + exchange.getIn().getHeaders());
}
})
.to("file:/home/molko/out")
.doCatch(Exception.class)
.log("Failed from qpid brokre : ${date:now}")
.log("${exception.stacktrace}")
.stop();
//@formatter:on
}
}