Transform

Camel supports the Message Translator from the EIP patterns.

How can systems using different data formats communicate with each other using messaging?

image

Use a special filter, a Message Translator, between other filters or applications to translate one data format into another.

The Message Translator can be done in different ways in Camel:

  • Using Transform or Set Body in the DSL

  • Calling a Processor or bean to perform the transformation

  • Using template-based Components, with the template being the source for how the message is translated

  • Messages can also be transformed using Data Format to marshal and unmarshal messages in different encodings.

This page is documenting the first approach by using Transform EIP.

Options

The Transform eip has no options.

Using Transform EIP

You can use a Transform which uses an Expression to do the transformation:

In the example below we prepend Hello to the message body using the Simple language:

from("direct:cheese")
    .setBody(simple("Hello ${body}"))
    .to("log:hello");

And in XML DSL:

<route>
    <from uri="direct:cheese"/>
    <transform>
        <simple>Hello ${body}</simple>
    </transform>
    <to uri="log:hello"/>
</route>

What is the difference between Transform and Set Body

The Transform EIP always sets the result on the OUT message body.

Set Body sets the result accordingly to the Exchange Pattern on the Exchange.