BTW are you positive that the consumer queues are actually created in each of the test cases you're doing? i.e. when you start/stop the broker are they created up front before you send any messages? If not you might wanna use this...
http://activemq.apache.org/configure-startup-destinations.html On 21/11/2007, kwark <[EMAIL PROTECTED]> wrote: > > I have a problem with VirtualTopics and persistency. > > Consider the following setup: > > I have a producer which produces messages to virtualtopic: > VirtualTopic.mytopic > I have a manager with an embedded broker and two statically defined queues: > Consumer.module1.VirtualTopic.mytopic and > Consumer.module2.VirtualTopic.mytopic > I have two consumers, one for each queue defined above > > Now everything works fine as expected as long as the broker stays online: > producer produces messages and even when one of the consumers goes down, it > receives all produced messages as soon as it comes back online. Cool! > > Consider now the following scenario: > 1) I start the manager with embedded broker, I start the consumer for > module1 and the producer. > 2) I let this run for a while and then I first stop the consumer and then > the producer. At this moment consumer for module1 has received all the > produced messages, but consumer for module2 was never started and did not > receive any of the produced messages. This can also be seen from inspection > of the queues through JMX: queue Consumer.module2.VirtualTopic.mytopic still > has x messages in its queue. > 3) Now I stop and restart the manager (broker). During restart I see a > Warning message that the referenceStore is not valid and AMQ is recovering. > It also logs that it has recovered x operations from redo log. > 4) I also start the consumer for module2, however it never receives the > messages produced before the broker restarted. > > Is this known behaviour? Did I forget to do something special? > > Some more information. This was tested with both AMQ 4.1 and latest 5.0 > snapshot. None of them produced the desired result. I use JMS transactions > and producer is set to produce persistent messages. > > I did some debugging when the broker starts and the recovered messages from > the redo log are messages of the VirtualTopic.mytopic topic. These messages > are recovered and AMQ tries to add them to the reference store for that > topic, which is a KahaTopicReferenceStore. When I look at the implementation > of addMessageReference I see that it checks the subscriberCount of the topic > and only adds it to the store when this is > 0. If I check the > VirtualTopic.mytopic with JMX I can see that this is 0, so it never gets > added back to the topics reference store. > > Can anyone provide some more insight on how to get persistency working > correctly with VirtualTopics? > > > > > > > > -- > View this message in context: > http://www.nabble.com/VirtualTopic-and-persistency-problem-tf4850349s2354.html#a13877860 > Sent from the ActiveMQ - User mailing list archive at Nabble.com. > > -- James ------- http://macstrac.blogspot.com/ Open Source Integration http://open.iona.com