[prev in list] [next in list] [prev in thread] [next in thread]
List: activemq-users
Subject: Re: Consuming persistent messages from a non-durable subscriber
From: Rob Davies <rajdavies () gmail ! com>
Date: 2008-03-31 8:19:54
Message-ID: 0C17FE2E-0D4F-4460-A00E-4F1C5C7BB2D8 () gmail ! com
[Download RAW message or body]
On 28 Mar 2008, at 09:42, Ramit Arora wrote:
>
> Hi All,
> I have a situation where I have to consume persisent messages from
> many
> non-durable subscribers. My publishers push persistent messages to a
> topic,
> which are consumed asynchronously by non-durable subscribers. I am
> using the
> AMQ Persistence Adapter & CLIENT_ACKNOWLEDGE. If I kill a non-durable
> subscriber & bring it up again, some messages are lost, which is
> expected.
> But consider the following case:
> 1. Start a publisher publishing persistent messages to a topic.
> 2. Start a non-durable subscriber which is slow compared to the
> publisher.
> 3. Kill the broker when 100 messages have been published but only 50
> have
> been consumed.
> 4. Since the publisher & subscriber are failover clients, they wait
> for the
> broker to come up again.
> 5. Restart the broker.
> 6. Try to get the remaining 50 messages to the non-durable subscriber.
>
> Step 6 does not work in both 5.0 & the latest 5.1 snapshot.
> Shouldn't the
> remaining 50 messages be delivered? The JMS spec says:
> "A JMS provider must deliver a PERSISTENT message once-and-only-
> once. This
> means a JMS provider failure must not cause it to be lost, and it
> must not
> deliver it twice. PERSISTENT (once-and-only-once) and NON_PERSISTENT
> (at-most-once)
> message delivery are a way for a JMS client to select between delivery
> techniques that may lose a messages if a JMS provider dies and those
> which
> take extra effort to insure that messages can survive such a
> failure. There
> is
> typically a performance/reliability trade-off implied by this
> choice. When a
> client selects the NON_PERSISTENT delivery mode, it is indicating
> that it
> values performance over reliability; a selection of PERSISTENT
> reverses the
> requested trade-off."
>
> Queues donot suffer from this problem. Please let me know if I am
> missing
> something.
>
> Thanks,
> Ramit
>
>
> --
> View this message in context: \
> http://www.nabble.com/Consuming-persistent-messages-from-a-non-durable-subscriber-tp16348721s2354p16348721.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
Message delivery by default is persistent - but there is a fundamental
difference in the contract between queues and topics:
Queue messages are always persisted
Topic messages are persisted if there exists a durable subscriber for
that topic.
You can get around this by using virtual destinations - see here: \
http://activemq.apache.org/virtual-destinations.html
cheers,
Rob
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic