activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From YoungSoul <youngs...@inbox.com>
Subject Re: Queue question
Date Fri, 02 Feb 2007 14:18:58 GMT

As far as I know - and someone please correct me if I am wrong...

The NON_PERSISTENT has to do with whether or not the jms service provider (
activemq in this case ) will persist the message in case ACTIVEMQ dies.  If
you try your scenario below but add step 2.5 of stop activemq, since you
send deliver NON_PERSISTENT messages, activemq only holds them in memory and
will be lost.  Bring up your consumer in step 3 and it should receive
nothing.

So your scenario below is working as expected with queues.

DurableSubscription is only for Topic subscribers.

When you say you want 'delivery assurance' it depends on your requirements. 
If you need that message to go to a queue subscriber even in the face of jms
provider failure then you will have to publish with PERSISTENT turned on. 
If you mean you need to deliver them whether the consumer is there or not,
and you dont care about provider failures, then you can send NON_PERSISTENT
and just bring consumers up and down at will.




GaryG wrote:
> 
> I'm doing some simple communication between two peers via a Queue, and I'm
> noticing odd persistence behavior.
> 
> Even though the producer is set with DeliveryMode.NON_PERSISTENT, what I
> see happen is this:
> 
> 1) Bring up AMQ broker
> 2) Bring up Producer and send 5 test messages.  At this point the consumer
> of the messages for this Q is not even running.
> 3) Bing up Consumer and it receive the 5 messages.
> 
> I've tried setting TTL on the Producer to something really short, but that
> didn't help.  I'm using Session.AUTO_ACKNOWLEDGE.
> 
> This seems wrong to me, as I would only expect the messages to be
> delivered to the consumer of the Q if the consumer was A) actually
> running, or B) there was persistence turned on.
> 
> If I use a Topic instead, the above scenario works as expected, and I only
> get the missed messages if I turn on persistence.
> 
> What am I missing?
> 
> Perhaps I'm not grasping what persistence is and how it should work?  I
> understand the messages persisted to a DB for backup, how is that
> different from journaling?  If I want delivery assurance, even if a
> consumer is down, do I have to turn on DeliveryMode.PERSISTENT on the
> producer, AND use a DurableSubscriber on the consumer end?
> 
> I appreciate any help!
> 
> -GaryG
> 

-- 
View this message in context: http://www.nabble.com/Queue-question-tf3157001.html#a8767619
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message