Process

The Processor interface is used to implement consumers of message exchanges or to implement a Message Translator

Options

The Process eip supports 1 options, which are listed below.

Name Description Default Type

ref

Required Reference to the Processor to lookup in the registry to use.

String

description

Sets the description of this node.

DescriptionDefinition

Samples

Using a processor in a route

Once you have written a class which implements processor like this…​

public class MyProcessor implements Processor {
  public void process(Exchange exchange) throws Exception {
    // do something...
  }
}

You can then easily use this inside a route by declaring the bean in Spring, say via the XML (or registering it in JNDI if that is your Registry)

<bean id="myProcessor" class="com.acme.MyProcessor"/>

Then in Camel you can do

from("activemq:myQueue").to("myProcessor");

Using the process DSL

In your route you can also use the process DSL syntax for invoking a processor.

Processor myProcessor = new MyProcessor();
...
from("activemq:myQueue").process(myProcessor);

If you need to lookup the processor in the Registry then you should use the processRef DSL:

from("activemq:myQueue").processRef("myProcessor");

Why use process when you can use to instead?

The process can be used in routes as an anonymous inner class such:

    from("activemq:myQueue").process(new Processor() {
        public void process(Exchange exchange) throws Exception {
            String payload = exchange.getIn().getBody(String.class);
            // do something with the payload and/or exchange here
           exchange.getIn().setBody("Changed body");
       }
    }).to("activemq:myOtherQueue");

This is usable for quickly whirling up some code. If the code in the inner class gets a bit more complicated it is of course advised to refactor it into a separate class.

Turning your processor into a full Component

There is a base class called ProcessorEndpoint which supports the full Endpoint semantics given a Processor instance.

So you just need to create a Component class by deriving from DefaultComponent which returns instances of ProcessorEndpoint. For more details see Writing Components