Hi,

I’m using ActiveMQ 5.2 and I’m experiencing a strange behavior with
OldestMessageEvictionStrategy. I have a very fast producer and a very slow
consumer and I set this policy in my xml.

          <policyEntry topic=">">
              <pendingMessageLimitStrategy> 
                 <constantPendingMessageLimitStrategy limit="10"/> 
               </pendingMessageLimitStrategy> 
          </policyEntry>


After my consumer have consumed prefetched & pending messages it start
receiving one message out of two that were produced. I thought I didn’t
understand how MessageEvictionStrategy were working so I download the
sources and stepped into. What I realized is that one message evicted out of
two is dispatched to the destination even of no message have been consumed
during that time. This is what I found

- When a message is discarded dequeueCounter is incremented.
- Then next time a message arrives it is evicted then dispatchMatched is
called.
- Because dequeueCounter have been called without any message dispatched,
isFull() return false.
- As a result it assumes there is an empty room in the prefetch and dispatch
the message.

Is this by design or I'm facing an Issue? Should I write a JIRA about this? 

Thanks

Yannick


-- 
View this message in context: 
http://www.nabble.com/Possible-defect-in-Message-Eviction-tp22413496p22413496.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to