Camel Components

Set Variable

The SetVariable EIP is used for setting an Exchange variable.

Options

The Set Variable eip supports the following options which are listed below.

Name Description Default Type

note

The note for this node.

String

description

The description for this node.

String

disabled

Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.

false

Boolean

name

Required Name of variable to set a new value. The simple language can be used to define a dynamic evaluated variable name. Otherwise a constant name will be used.

String

expression

Required The expression whose result is used as the variable value.

ExpressionDefinition

Message Body

The message body at each side of the Set Variable EIP: EIP input is the body it needs, EIP output the body after it, and Steps the body its own steps start with.

Side Body Description

EIP output

unchanged

Sets a variable: the body stays as it was.

The bodies are the ones with the default options. A side that is not listed is not known, and tooling does not guess it. The carriers are described in the Camel Catalog.

Exchange properties

The Set Variable eip has no exchange properties.

Example

The following example shows how to set a variable on the exchange in a Camel route:

  • Java

  • XML

  • YAML

from("direct:a")
    .setVariable("myVar", constant("test"))
    .to("direct:b");
<route>
    <from uri="direct:a"/>
    <setVariable name="myVar">
        <constant>test</constant>
    </setVariable>
    <to uri="direct:b"/>
</route>
- route:
    from:
      uri: direct:a
      steps:
        - setVariable:
            name: myVar
            expression:
              constant:
                expression: test
        - to:
            uri: direct:b

Setting a variable from a message header

You can also set a variable with the value from a message header.

  • Java

  • XML

  • YAML

from("direct:a")
    .setVariable("foo", header("bar"))
    .to("direct:b");
<route>
    <from uri="direct:a"/>
    <setVariable name="foo">
        <header>bar</header>
    </setVariable>
    <to uri="direct:b"/>
</route>
- route:
    from:
      uri: direct:a
      steps:
        - setVariable:
            name: foo
            expression:
              header:
                expression: bar
        - to:
            uri: direct:b

Setting variable with the current message body

It is of course also possible to set a variable with a value from anything on the Exchange such as the message body, where we use the Simple language to refer to the message body:

  • Java

  • XML

  • YAML

from("direct:a")
    .setVariable("myBody", simple("${body}"))
    .to("direct:b");
<route>
    <from uri="direct:a"/>
    <setVariable name="myBody">
        <simple>${body}</simple>
    </setVariable>
    <to uri="direct:b"/>
</route>
- route:
    from:
      uri: direct:a
      steps:
        - setVariable:
            name: myBody
            expression:
              simple:
                expression: "${body}"
        - to:
            uri: direct:b