activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gt2 <>
Subject Message persistence, durable consumers and more.
Date Mon, 15 Mar 2010 14:24:57 GMT

Hi all,

I'm looking at ActiveMQ from the perspective of research. We're in need of a
p/s platform that can create topics dynamically and where the clients have
very little knowledge of other clients or services that may be connected to
a broker. Because these clients also connect at will, mostly dynamically and
may change their interest over time, there are some complications that seem
to arise in the context of message delivery.

One requirement that you don't see often in enterprise systems is that any
consumer that happens to connect to the platform should be able to register
an interest on any topic and specify how far back in time the messages
should be played back to him.

I've read a lot of information about persistence, durable consumers and so
on, but JMS seems to assume a rather static environment. I.e., you make
yourself known as a consumer once, either durable or not, and the broker
maintains these messages for you if you happen to go offline.

The following assertions demonstrate how I interpreted the terms that apply
to this problem:

1. Persistence:  preventing messages getting lost when the broker crashes.
2. Durable consumer: A consumer that registers once, is remembered by the
broker, and for whom the broker maintains a list of unacknowledged messages,
which are sent once the consumer comes back online.
3. Message TTL: The time the message is valid for. If a message expired on
non-persistent queues they are discarded. When on a persistent queue, it is
moved to DLQ. durable consumers no longer receive these messages if a
message is expired. In this sense, TTL is only useful to set when there are
durable consumers are consuming from the topic.

4. The overall conclusion I made is that the broker only sends non-expired
messages to currently known consumers. So, even if a message is persistent
and is still in a topic, a new consumer registering after a message was sent
will only ever receive the newer messages sent by producers. If it wanted to
receive the ones sent before that, it should have been a durable consumer
and it should have registered prior to the messages being created.

5. There is no "JMS" method to retrieve messages by (historic) timestamp
from a particular topic.

Can someone tell me whether these assertions are correct, please?

View this message in context:
Sent from the ActiveMQ - User mailing list archive at

View raw message