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.

Reply via email to