XML DSL (Message Translator)
In some situations, our deployment may consist of different systems that are using different data formats in their messages for communication. Each application would have its own data format and therefore we would need to translate messages into formats that are supported.
In this scenario, we would use a message translator as a filter for the translation process and we could incorporate multiple translation processes chained together.
Camel has the ability to support the message translator pattern using the processor, bean, or transform possibilities.
XML DSL Processor Example
<route>
<from uri="direct:convertOrder"/>
<process ref="converter"/>
</route>
<bean id="converter" class="com.mycompany.
OrderConvertProcessor"/>
XML DSL Java Bean Example
Instead of the processor option (shown above), we can also use a POJO bean option. The advantage of using a POJO bean over a processor is that we don’t have to implement any Camel-specific interfaces or types. This type of implementation will allow us to fully decouple your beans from Camel.
public class OrderConvertBean {
public StringconvertOrder(String body) {
// do message translation here
}
}
Object transformer = new OrderConvertBean();
from("direct:convertOrder").bean(transformer);
Using the following Bean definition:
<route>
<from uri="direct:convertOrder"/>
<bean ref="converter"/>
</route>
<bean id="converter"
class="com.mycompany.OrderConvertBean"/>
XML DSP Transform Example
The Transform option is a specific type of processor that allows us to define a specific response that will be transmitted back to the sender. In the following example, we can see the use of a transform to return a string constant of “Acknowledged” as a response once we have successfully have copied the message to a queue.