activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Naveen Rawat" <nav...@in.effectsoft.com>
Subject Re: Queue hogging by a single consumer.
Date Thu, 17 Aug 2006 10:45:29 GMT
Hi James, 

Thanks for your response. 


> Are you trying to implement request-response with A, B, C making 
> requests on Z and getting the response? Or can A, B, C process any 
> message from Z? 
 

Exactly the first case.
A, B, C making requests on Z and getting the response from Z 

 

> I'm not sure if your issue is that say A doesn't see the responses for 
> its request (if thats the case use either 3 queues, use temporary 
> queues for the responses or use a selector and a correlationID on the 
> request & response) - or is it that you have a small number of 
> responses from Z and they are being hogged by one consumer - in which 
> case setting a small prefetch and a round robin dispatch policy will 
> fix this. 
 

Its that,  A doesn't see the responses for its requests made. 

I would really appreciate if I can get some help stuff on -
	1) Creating, destroying and maintaining data in temporary queues.
	2) Setting selector and correlationID in messages. 

 

> On 8/17/06, Naveen Rawat <naveen@...> wrote: 
> > 
> > Hi all :) 
> > 
> > I am working with the binary version of ActiveMQ 4.0 broker and trying out 
> > the openwire cpp apis for asynchronous messaging. 
> > [https://svn.apache.org/repos/asf/incubator/activemq/tags/activemq-4.0/openw 
> > ire-cpp] 
> > 
> > 
> > 
> > I wonder if I m resurrecting the mummies of issues already burnt. 
> > 
> > 
> > 
> > I am trying out having 3 consumers A, B and C listening on the same queue. 
> > What I am trying to do is - 
> > 
> >         A, B, C sending on Q1, and consuming Z's response on Q2 
> >         Consumer Z listening on Q1, responding back on Q2. 
> > 
> >         like this - 
> >         A/B/C  >>  Q1  >>  Z  >>  Q2  >>  A/B/C 
> > 
> > 
> > Listening/responding to a single consumer is working well at present. BUT 
> > broker is spoofing up the responses from Z to the simultaneous consumers 
> > (either 2 or all three). Response for one consumer (A) is going to any of 
> > the other consumer (B/C). Same is happening for other consumers. Being 
> > prefetch size preset to 1000, the consumer that first manages session with 
> > the broker on a queue is getting all the messages (and if it gets 
> > terminated, the following one hogs the all and so on.) . 
> > 
> > As I m at presently testing, setting prefetch size to less (say 1), even 
> > dont solves the purpose as not giving it frequest quick requests (man Vs 
> > machine). Moreover as the hogging consumer is reading and acknowledging all 
> > the responses, the prefetch size of even 1 is not surpassed. 
> > 
> > I tried out "with no success" the way of grid processing of messages (using 
> > MessageGroups) as suggested in 
> >         http://activemq.org/site/how-do-i-preserve-order-of-messages.html 
> > Code relevant of this is as follows - 
> > 
> >         [........A/B/C.................................................... 
> >         producer = session->createProducer(Q1) ; 
> >         producer->setPersistent(true) ; 
> >         message = session->createBytesMessage() ; 
> >         message->setJMSXGroupID("cheese") ; 
> >         message->writeString("Hello World") ; 
> >         producer->send(message); 
> >         .................................................................] 
> > 
> > 
> >         [ .........Z ' s OnMessage(message)............................... 
> >         p<string> NGid; 
> >         NGid = message->getJMSXGroupID(); 
> >         producer = session->createProducer(Q2) ; 
> >         producer->setPersistent(true) ; 
> >         reqMessage = session->createBytesMessage() ; 
> >         reqMessage->setJMSXGroupID(NGid->c_str() ); 
> >         reqMessage->writeString("R E C E I V E D") ;    //response string 
> >         producer->send(reqMessage); 
> >         .................................................................] 
> > 
> > Is there anymore needed in the code that I m loosing? 
> > 
> > 
> > I come to know that there are certain issues yet not resolved pertaining to 
> > the prefetch buffer initial size. Correct me please. 
> > Will manipulation of prefetch buffer size help my cause? Please suggest a 
> > way otherwise. 
> > 


                         THANKS IN ADVANCE

 Regards,
 Navin


Mime
View raw message