You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by wizard <an...@gmail.com> on 2006/08/28 13:27:42 UTC

Topic message

Hi, I'm new to amq, so I have a basic question, I guess.

I've created a queue, with a producer and a consumer, and I was able to send
messages, and keep them in queue.

Now I've changed to using a topic, and I still send and receive messages,
but the behaviour has changed: when I produce a message and the consumer is
running, it instantly gets the message. But when I produce a message and the
consumer isn't running, I seem to lose the message, because when I connect
the consumer, it doesn't read any message at all, and my queue size is
always 0.

Is this how topics are supposed to work? What is wrong?
-- 
View this message in context: http://www.nabble.com/Topic-message-tf2176745.html#a6018448
Sent from the ActiveMQ - User forum at Nabble.com.


Re: Topic message

Posted by Adrian Co <ac...@exist.com>.
Hi!

Welcome to the ActiveMQ community! :-)

Here's some interesting reading:
http://www.activemq.org/site/how-does-a-queue-compare-to-a-topic.html
http://www.activemq.org/site/how-do-durable-queues-and-topics-work.html

In a nutshell I guess, when you use queues, each message is stored in 
the queue until a consumer consumes them (each message will be consumed 
by only one consumer), while for topics, each message will be send to 
all consumers currently subscribed to the topic. If there is no 
consumers, the message is discarded. If you want to receive messages 
using topics while your consumer is offline, you could use durable 
subscriptions, but the condition is that you must first subscribe to the 
topic before going offline. (i.e. tell the broker that you are 
interested in the topic's messages.)

Another workaround is to use the recovery policies of ActiveMQ. This 
allows you to somewhat go back in time and receive some of the messages 
you've missed. You must specify a retroactive consumer to use this:
http://www.activemq.org/site/retroactive-consumer.html
http://www.activemq.org/site/subscription-recovery-policy.html

Hope these helps!

Regards,
Adrian Co

wizard wrote:
> Hi, I'm new to amq, so I have a basic question, I guess.
>
>   
> I've created a queue, with a producer and a consumer, and I was able to send
> messages, and keep them in queue.
>
> Now I've changed to using a topic, and I still send and receive messages,
> but the behaviour has changed: when I produce a message and the consumer is
> running, it instantly gets the message. But when I produce a message and the
> consumer isn't running, I seem to lose the message, because when I connect
> the consumer, it doesn't read any message at all, and my queue size is
> always 0.
>
> Is this how topics are supposed to work? What is wrong?
>