Use Exchange Property in Camel DSL "to"
13,601
Solution 1
The to
in the Camel is not interpreted at runtime.
You should use recipientList if you want to construct your URI dynamically. See https://camel.apache.org/manual/latest/faq/how-to-use-a-dynamic-uri-in-to.html
Solution 2
UPDATED New answer accepted above instead of this previous one:
The answer is [was]:
.to("file:/tmp?fileName=file-${property.uid}") + ".xml")
This simple expression pulls in the exchange property. For a complete list of what you can pull in, see the Simple Expression Language Reference
Author by
dev
Updated on June 16, 2022Comments
-
dev almost 2 years
I want to set a property on a Camel Exchange and then use this property when saving the file. In my camel dsl I have the following:
.process(processorToSetExhangeProperty) // sets the property <uid> on the exchange .to("file:/tmp?fileName=file-" + property("uid") + ".xml")
The file is being saved as:
"file-property{uid}.xml" though
My processor is as follows:
@Override public void process(Exchange exchange) throws Exception { UUID uuid = UUID.randomUUID(); exchange.setProperty("uid", uuid.toString()); exchange.setOut(exchange.getIn()); }
Any thoughts on what may be going wrong or how I can achieve this?