Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the asciidoc in the repository: https://github.com/apache/camel/blob/master/README.md https://github.com/apache/camel/blob/master/components/readme.adoc
ProcessorThe Processor interface is used to implement consumers of message exchanges or to implement a Message Translator Using a processor in a routeOnce 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 DSLIn your route you can also use the
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 ComponentThere 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 See Also |
