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

© 2004-2015 The Apache Software Foundation.
Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram