Thanks for responding, I had read that before, but I don't think it explains how or when a queue with multipleConsumers becomes full. Without reading the code, I would guess that probably a message is not removed from the queue until ALL consumers have read it (meaning that if any single consumer stalls, the queue will eventually fill and the producer will be blocked), but whether that's true or not is not indicated in the documentation. And even knowing that it's a LinkedBlockingQueue doesn't help answer that question, since it depends entirely on how the queue is used by Camel.

So I think it would be useful to know the detailed semantics of SEDA queue when blockWhenFull is true and multipleConsumers is true, e.g. is my guess above correct?



On 10/27/2013 01:52 PM, gquintana wrote:
Hi,

Reading from  SEDA component documentation
<http://camel.apache.org/seda.html#SEDA-Options>  , I can see:
"blockWhenFull     2.9     false    Whether a thread that sends messages to a 
full
SEDA queue will block until the queue's capacity is no longer exhausted. By*
default, an exception will be thrown stating that the queue is full. By
enabling this option, the calling thread will instead block and wait until
the message can be accepted.*"

Internally, the Seda component is based on a  LinkedBlockingQueue
<http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedBlockingQueue.html>
, it's not a ring buffer.

Gérald



--
View this message in context: 
http://camel.465427.n5.nabble.com/capacity-of-seda-vm-with-multipleConsumers-true-tp5742266p5742280.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to