You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by ABouchama <ti...@yahoo.Fr> on 2014/01/17 14:25:22 UTC
problem in recipientList with onPrepareRef
Hello,
The problem: we send a message the queue OUT, the message should be sent 2
times to the queue A, and 1 to the queue B, and we should have the following
result:
1. Msg = should be in the queue A, with header invoked=1
2. Msg = should be in the queue B, with header invoked=2
3. Msg = should be in the queue A, with header invoked=3
But we have this :
1. Msg = should be in the queue A, with header invoked=3
2. Msg = should be in the queue B, with header invoked=2
3. Msg = should be in the queue A, with header invoked=3
We use the following route:
<route id="Sending" errorHandlerRef="myDeadLetterChannel">
<from uri="activemq:queue:OUT" />
<setHeader headerName="recipients">
<simple>activemq://queue:A,activemq://queue:B,activemq://queue:A</simple>
</setHeader>
<recipientList parallelProcessing="true" streaming="true"
onPrepareRef="recipientListOnPrepare">
<header>recipients</header>
</recipientList>
</route>
package com.company;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class recipientListOnPrepare implements Processor {
public void process(Exchange exchange) throws Exception {
String recipients = (String) exchange.getIn().getHeader("recipients");
String toEndpoint = (String) exchange.getProperty(Exchange.TO_ENDPOINT);
String[] Recipients = recipients.split(",");
for (int i = 0; i < recipients.length; i++) {
if (toEndpoint.equalsIgnoreCase(recipients[i])) {
exchange.getIn().setHeader("invoked", i);
}
}
}
}
Thanks in advance,
Regards
--
View this message in context: http://camel.465427.n5.nabble.com/problem-in-recipientList-with-onPrepareRef-tp5746151.html
Sent from the Camel - Users mailing list archive at Nabble.com.