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

Share:
13,601
dev
Author by

dev

Updated on June 16, 2022

Comments

  • dev
    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?