Hi, We have been using Camel ( version 2.10) to monitor/route and process attachments to emails coming in to one of our mailboxes. At the end of the processing some emails are copied to an Inbox folder using the '.setHeader("copyTo")' method. This has been working quite well. Now the users have asked for a new requirement, where some emails depending on the type of email attachment has to be copied to two Inbox folders. I tried to do this using multicast and a custom onPrepare method on my processor to do a deep copy of the message. But this always copies the email to only one of the folders. following is the route description and custom processor
from("direct:incomingValidateAttachments").routeId("direct:incomingValidateAttachments") //check the attachment to see if they are valid .log(LoggingLevel.DEBUG, logger,"direct:incomingValidateAttachments" + logMessage) .doTry() .to("direct:incomingSplitAttachments") .doCatch(Throwable.class) //send the emails with invalid attachment to Inbox/errors folder .log(LoggingLevel.DEBUG, logger, "Error catched") .setHeader("copyTo").constant("Inbox/errors") .end() //copy valid emails two Inbox folders communications and datafeeds .multicast().onPrepare(new MessageClonePrepare())//using custom processor for copying the mail message .to("direct:coptToComms") .to("direct:coptToDataFeeds"); //copy email to communications folder from("direct:coptToComms").routeId("direct:coptToComms") .log(LoggingLevel.DEBUG, logger, "direct:coptToComms" + logMessage) .setHeader("copyTo").constant("Inbox/Comms"); // Send the email to the data feed folder from("direct:coptToDataFeeds").routeId("direct:coptToDataFeeds") .log(LoggingLevel.DEBUG, logger, "direct:coptToDataFeeds" + logMessage) .setHeader("copyTo").constant("Inbox/DataFeeds"); //Class to copy the email message during Multicast import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.NoSuchHeaderException; import org.apache.camel.Processor; import org.apache.camel.component.mail.MailMessage; public class MessageClonePrepare implements Processor { public void process(Exchange exchange) throws NoSuchHeaderException { Message in = exchange.getIn(); Message newMessage = new MailMessage(); newMessage.setBody(in.getBody()); newMessage.setAttachments(in.getAttachments()); newMessage.setHeaders(in.getHeaders()); exchange.setIn(newMessage); } } Please could you help me to find what I am doing wrong? Is using multicast the correct way to copy an email in two Inbox folders? -- View this message in context: http://camel.465427.n5.nabble.com/Camel-Multicast-copying-email-to-two-Inbox-folders-tp5772679.html Sent from the Camel - Users mailing list archive at Nabble.com.