I suggest to study the source code.
On Mon, Oct 28, 2013 at 3:32 PM, Keith Freeman <8fo...@gmail.com> wrote: > Ok, but I don't think that answers the question. Say I have one route > putting things in the queue, and 3 other (parallel) routes reading the > messages. All 3 get each message, but when does Camel remove the message > from the queue? > > * after at least 1 of the readers takes the message > * after all of the readers take the message > * something else, like a quorum of N/2 + 1? > > I think we need to know this to understand the semantics of seda:/vm: with > multipleConsumers=true. But I'm guessing that the answer is that Camel > removes the message only after all readers have taken it, otherwise multiple > readers wouldn't be guaranteed to get every message. > > > On 10/28/2013 06:11 AM, gquintana wrote: >> >> As it's a LinkedBlockingQueue, the messages are read using >> BlockingQueue#poll >> method, then whatever the result of the processing may be, the messages >> has >> been picked. >> >> I think the multipleConsumers acts like the multicast >> <http://camel.apache.org/multicast.html> processor, you could replace >> SEDA+multipleConsumers by SEDA+multicast and have the same result, and you >> could execute theses consumers in parallel (fork & join). >> >> If you have only one parallel consumer (concurrentConsumers=1) and it >> stalls, then the queue could fill and the producer could block or not >> depending on the blockWhenFull setting. This is not related to >> multipleConsumers settings though. >> >> >> >> -- >> View this message in context: >> http://camel.465427.n5.nabble.com/capacity-of-seda-vm-with-multipleConsumers-true-tp5742266p5742296.html >> Sent from the Camel - Users mailing list archive at Nabble.com. > > -- Claus Ibsen ----------------- Red Hat, Inc. Email: cib...@redhat.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen