You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by SledgeHammer <gr...@firstam.com> on 2013/08/21 20:16:31 UTC

Can you explain how this part works?

So my set up is that each producer creates 2 queues (send queue and recv
queue). When a consumer connects, it listens to the advisory queue and
attaches to all the send queues. So for example, a consumer may be watching
10 send queues.

The main work loop is:

for (;;)
{
   foreach queue
      WaitForMutex
      ReceiveNoWait()
      ReleaseMutex
}

The stuff with the mutex is because we are running 200 consumers on single
CPU VMs with another heavy process, so we kind of want to switch off between
that process and this consumer so they don't try to do work at the same time
and kill the machine.

Anyways... my question is... if we are monitoring the queue via the web
console, it seems like occasionally (kinda frequently) we get into a
situation where a msg shows pending, but it has actually been dispatched to
a consumer...

What I'm getting at, is if the ReceiveNoWait() is pulling a message, why is
it still showing as pending in the web console?




--
View this message in context: http://activemq.2283324.n4.nabble.com/Can-you-explain-how-this-part-works-tp4670560.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Re: Can you explain how this part works?

Posted by Christian Posta <ch...@gmail.com>.
Could be because it's inflight and not ack'd.
Take a look here:
http://activemq.apache.org/how-do-i-find-the-size-of-a-queue.html

The webconsole doesn't show inflight messages (those dispatched, but not
ack'd). Jconsole does. And the new webconsole (http://hawt.io) will.

HTH


On Wed, Aug 21, 2013 at 11:16 AM, SledgeHammer <gr...@firstam.com> wrote:

> So my set up is that each producer creates 2 queues (send queue and recv
> queue). When a consumer connects, it listens to the advisory queue and
> attaches to all the send queues. So for example, a consumer may be watching
> 10 send queues.
>
> The main work loop is:
>
> for (;;)
> {
>    foreach queue
>       WaitForMutex
>       ReceiveNoWait()
>       ReleaseMutex
> }
>
> The stuff with the mutex is because we are running 200 consumers on single
> CPU VMs with another heavy process, so we kind of want to switch off
> between
> that process and this consumer so they don't try to do work at the same
> time
> and kill the machine.
>
> Anyways... my question is... if we are monitoring the queue via the web
> console, it seems like occasionally (kinda frequently) we get into a
> situation where a msg shows pending, but it has actually been dispatched to
> a consumer...
>
> What I'm getting at, is if the ReceiveNoWait() is pulling a message, why is
> it still showing as pending in the web console?
>
>
>
>
> --
> View this message in context:
> http://activemq.2283324.n4.nabble.com/Can-you-explain-how-this-part-works-tp4670560.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>



-- 
*Christian Posta*
http://www.christianposta.com/blog
twitter: @christianposta