How do I write a custom Processor which sends multiple messages?
You could use a Splitter or use multiple Message Translator instances in your route.
Or you could write a custom processor which is injected with a ProducerTemplate instance that just generates N messages...
public class MyProducer implements Processor { ProducerTemplate producer; public void setProducer(ProducerTemplate producer) { this.producer = producer; } public void process(Exchange inExchange) { // some loop for each message for (String template in templates) { // lets send a new exchange to the producers default destination // being called back so we can customize the message producer.send(new Processor() { public void process(Exchange outExchange) { outExchange.getIn().setBody("This is the body"); // set some headers too? } }); } }
Then the ProducerTemplate can be injected - configured in spring.xml with its default URI
<camelContext xmlns="http://camel.apache.org/schema/spring"> <template id="myTemplate" defaultEndpoint="activemq:someQueue"/> </camelContext> <bean id="foo" class="MyProducer"> <property name="producer" ref="myTemplate"/> </bean>
Note that the default output URI is inherited from the <template/> configuration. If you prefer you could specify that in the producer.send() method call