Hello,

I have some questions regarding the VM (http://camel.apache.org/vm) component. So, just to make sure I understand the docs correctly:

1) Even though VM channels live at the "JVM level", they still need to be associated with a CamelContext. So, if no CamelContext referencing the channel exists, the channel is destroyed and any in-flight messages are discared. (For example, assume you are using it in a web container for communication across 2 WARs; undeploying BOTH of them results in the VM channel to be destroyed and any messages inside it to be discarded).

2) Even though it does not provide persistence, it is also reliable in that it doesn't "drop" messages. So, if something makes it into the queue, it will come out on the other side (unless of course the channel is destroyed as per case (1) above). Correct?

3) The docs say that setting the "waitForTaskToComplete" flag (http://camel.apache.org/seda.html) causes the behaviour: "the caller should wait for the async task to complete or not before continuing". Who is the "caller" in this context? The thread submitting a message to the queue? So, setting this flag means that posting a message to the queue would block the thread that posted it until the message is retrieved and processed on the other side?

4) Is it possible to specify a TTL per message posted in the VM queue? So, if a message arrives to late at the consumer it will be dropped? My understanding is that the "timeout" parameter refers to the time spent while processing a message at the consumer side and not for the time the message can exist in the queue.

5) Suppose "multipleConsumers" is true; how does the "concurrentConsumers" parameter affect each consumer? Will I have "concurrentConsumers x number_of_receiving_endpoints" threads working on processing messages?

Thank you in advance.

Reply via email to