I need the following functionalities :
Multiple Producers [same or different JVM].
Multiple Concurrent Consumers [same or different JVM].
No message Loss (even if a consumer crash), [in JMS, it relies on the principle of client acknowledgment].
The primary idea was to use the terracotta queues but there is no simple way to have multiple consumers and no message loss.
What is the best way (and the terracotta tools) to achieve this mechanism ?
While the queue footprint itself will reside in Terracotta, you can have multiple consumers and producers. The queue itself is clustered and durable and backed by the TSA.
For performance a queue is best performant when its point to point - one consumer and one producer.
Lastly, newer versions of Terracotta will provide additional enhancements to the Toolkit. Stay tuned.