Hi

Sorry - I should have said that I did try preFetch="1", and I also updated
the constantPendingMessage limit to 0.

Here's my config:
                <policyEntry topic=">" topicPrefetch="1"
alwaysRetroactive="true">
                    <subscriptionRecoveryPolicy>
                        <lastImageSubscriptionRecoveryPolicy/>
                    </subscriptionRecoveryPolicy>
                    <pendingMessageLimitStrategy>
                        <constantPendingMessageLimitStrategy limit="0"/>
                    </pendingMessageLimitStrategy>
                    <messageEvictionStrategy>
                        <oldestMessageEvictionStrategy/>
                    </messageEvictionStrategy>
                </policyEntry>

But between the producer and consumer you can see a queue building up, and
the latency increasing second by second:

Producer, sending approx 5000 msgs/s
  Sending message: 3944, 3944 msg/s
  Sending message: 8302, 4358 msg/s
  Sending message: 13471, 5169 msg/s
  Sending message: 18763, 5292 msg/s
  Sending message: 24212, 5449 msg/s
  Sending message: 29331, 5119 msg/s
  Sending message: 35003, 5672 msg/s
  Sending message: 40666, 5663 msg/s
  Sending message: 46207, 5541 msg/s
  Sending message: 51914, 5707 msg/s

Consumer, receiving only 500-1000 msgs/s, latency increasing, no messages
being discarded
  Received message: 1525, 1526 msgs/s, latency 21 < 197 < 439
  Received message: 3289, 1764 msgs/s, latency 350 < 624 < 937
  Received message: 4586, 1297 msgs/s, latency 948 < 1240 < 1595
  Received message: 6390, 1804 msgs/s, latency 1591 < 1983 < 2239
  Received message: 7947, 1557 msgs/s, latency 2235 < 2485 < 2784
  Received message: 8958, 1011 msgs/s, latency 3102 < 3345 < 3625
  Received message: 9464, 506 msgs/s, latency 4422 < 4451 < 4503
  Received message: 9970, 506 msgs/s, latency 5014 < 5061 < 5121
  Received message: 10470, 500 msgs/s, latency 5751 < 5812 < 5873
  Received message: 10971, 501 msgs/s, latency 6409 < 6466 < 6527

Each row is a 1 second sampling period
Messages are simple incrementing ids
Latency is given as min < average < max, in milliseconds

So, I'm kind of at the end of things to try and get this working... but I
hope there's something simple I missing

Thanks again

Ben

From: gtully [via ActiveMQ]
[mailto:ml-node+s2283324n4660890...@n4.nabble.com] 
Sent: 19 December 2012 13:34
To: benj
Subject: Re: ActiveMQ slow consumer policy

> 1000 topics with a prefetch of 100 is 100,000 pending messages in memory. 
>
> To get real eager discarding try: 
> 
> <policyEntry topic=">" topicPrefetch="1" > 
>                     <subscriptionRecoveryPolicy> 
>                         <lastImageSubscriptionRecoveryPolicy/> 
>                     </subscriptionRecoveryPolicy> 
>                     <pendingMessageLimitStrategy> 
>                         <constantPendingMessageLimitStrategy limit="0"/> 
>                     </pendingMessageLimitStrategy> 
> ... 
> 
> so that it won't keep any messages pending when the consumer is not ready 
> to consume. this will reduce the dispatch work load on the topic and
> ensure 
> fast consumer get all messages while slow consumers get gaps. 
> 
> The lastImageSubscriptionRecoveryPolicy is only for retroactive 
> returning/new consumers, the get the current last state when the connect. 
> 




--
View this message in context: 
http://activemq.2283324.n4.nabble.com/ActiveMQ-slow-consumer-policy-tp4660859p4660900.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to