activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <james.strac...@gmail.com>
Subject Re: Queue hogging by a single consumer.
Date Thu, 17 Aug 2006 13:41:22 GMT
On 8/17/06, Naveen Rawat <naveen@in.effectsoft.com> wrote:
> Great James
> Your suggestion is working. A major hurdle seems solved.
> A little query down there.
>
>
>
> > > 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.
> >
> > Details here
> >
> > http://incubator.apache.org/activemq/how-should-i-implement-request-response-with-jms.html
> >
> > for 1) just call session.createTemporaryQueue() and set that queue on
> > the Message.setJMSReplyTo() property so that services can reply to
> > your temporary queue. They are deleted when A terminates so there's no
> > issue with maintaining data.
> >
> > for 2) just add a JMSCorrelationID() to the request messages you send
> > as requests. You can then use a selector such as "JMSCorrelationID =
> > 'abc'" on the consumer for responses so that responses are filtered to
> > only return A's results etc
>
>
> I went for this (2nd) one. Even though now a result is obtained, I would
> like to ask which one approach is more favoured by you.
> Is it the temporary queues overhead matter that makes 2nd score over 1st?
> Any other reason please tell.

The main difference is, do you want the response to be persistent.
e.g. if A dies and comes back again later - do you want it to resume
processing old results? In which case use a persistent queue and
correlation IDs. If the responses are transient then use a temporary
queue so the old messages get discarded by the broker when A dies.


-- 

James
-------
http://radio.weblogs.com/0112098/

Mime
View raw message