Are you marking the message as persistent? On Nov 4, 2013, at 1:08 PM, Attila Nagy <b...@fsn.hu> wrote:
> Even on activemq.org you can find the terms durable topic and queue. I think > this is a compact way to represent that I want to store/get my messages even > when the consumer is offline. > > BTW, I'm afraid you haven't read my mail to the end, or the message didn't > get through. > I'll try to conclude it: I would like to post to a virtual topic in a network > of brokers and consume from this topic (queues) with different clients -with > durable subscriptions, but I hope you won't mind there is no durable > subscription for queues- with different selectors, and I would like to get > only those messages to those queues, which the selectors match. > > This works when the consumer is online (consuming from the queue), but when I > remove it, nothing will get into the queue. > > Or the other way around: all messages got into the queue even when the > consumer is offline, but the consumer receives messages in very slow batches > when I use a selector. > Without a selector, the full speed can be achieved. > > These are two problems, though. > > On 11/04/2013 04:56 PM, Aleksandar Ivanisevic wrote: >> The only thing that is durable is a consumer, topic per se can not be >> durable. Also how is a queue durable? Perhaps you mean a queue with >> persistent messages on it? >> >> To have a durable consumer to a topic you need to create a durable >> subscription, either through the console or by sending a client-id and >> activemq.subscriptionName headers when connecting. >> >> Attila Nagy <b...@fsn.hu> writes: >> >>> Hi, >>> >>> I'm struggling with AMQ 5.9.0 to achieve my goals: durable virtual >>> topics with selectors on STOMP, with a network of four brokers >>> (connected with SSL connectors, with ACLs and certificate >>> authentication/authorization both on client and server side). >>> >>> In english: I want to publish messages to a -more, but I think it's >>> irrelevant here- (virtual) topic from machines spread in many data >>> centers to AMQ servers in two DCs (2x2 machines, fully meshed). Any >>> publisher or consumer can connect to any of the servers. >>> The messages in the topic have several headers and I would like to >>> filter them into durable queues. >>> So for example Publisher1..10 publishes Type1..10 messages, but >>> Consumer1 only consuming Type1, Consumer2 consuming Type1-3 and so on >>> from durable queues. >>> To protect the queues, I would like to deliver only the messages >>> matching the consumer's selector, and publish the message with a TTL >>> set, so if the consumer for the given queue is away for an extender >>> period of time, the messages should be dropped. >>> >>> Seems to be fun, but I can't get it to work. >>> >>> The two behaviours I could get -so far with only one machine and only >>> one publisher/consumer (one queue): >>> - everything works nicely, the queue gets only the relevant messages, >>> but it's not durable. If there is a consumer, it gets the messages, >>> but if nobody listens, nothing gets to the queue. >>> - the queue gets all of the messages (not just the ones, the selector >>> would allow) and is durable. However, the consumer gets the messages >>> in bursts, like around 130 messages per second and nothing for about a >>> minute, then another 130 messages and nothing for a minute, while the >>> queue is full with messages. >>> >>> The configuration I use is: >>> http://pastebin.com/d8rkB0Yc >>> >>> The difference between the two, described above is the selectorAware >>> true setting, commented out in the pastebin config. >>> >>> I use a python client, publish to /topic/VirtualTopic.radius and >>> consume from /queue/Consumer.radiusmq.VirtualTopic.radius with the >>> following code snippet: >>> conn.connect(headers={'client-id':'radiusmq'}) >>> conn.subscribe(headers={ >>> 'destination':'/queue/Consumer.radiusmq.VirtualTopic.radius', >>> 'ack':'client', >>> 'id':1, >>> 'activemq.prefetchSize':1000, >>> 'selector':"Xsystem = 'wired' AND (" >>> "Xstatustype = 'STOP' OR " >>> "Xstatustype = 'INTERIM_UPDATE')", >>> } >>> ) >>> >>> I have some graphs about the latter case, if helps, however, I would >>> like to get the former working, but with a durable queue. >>> >>> Thanks, >>> > >