activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Posta <christian.po...@gmail.com>
Subject Re: Model thread question
Date Wed, 04 Sep 2013 21:08:54 GMT
Double checked the source....... so here's the deal.. if you use
dedicatedTaskRunner==true or
-Dorg.apache.activemq.UseDedicatedTaskRunner=true, then you'll end up with
an executor at that session level with only one thread.

Otherwise, the PDF docs are correct, you end up using a PooledTaskRunner
which will allow up to 1000 threads in its pool (configurable).

You can also check this doc as it explains it a little more:
http://activemq.apache.org/how-to-deal-with-large-number-of-threads-in-clients.html

So to sum up, both are right. The flow is still one transport thread
delivers to one (a single) session thread (unless you set
alwaysSessionAsync, which removes the session threading and associated
context switching altogether) which delivers to a consumer, however that
"one session thread" is really a single thread in a possible pool of
threads.

Hope that helps out...


On Wed, Sep 4, 2013 at 1:40 PM, Jose María Zaragoza <demablogia@gmail.com>wrote:

> Reading "ActiveMQ in action"  doesn't say anything about pool of
> threads ( one per consumer )   :-S
>
> What a mess ...
>
>
>
> 2013/9/4 Jose María Zaragoza <demablogia@gmail.com>:
> > Thanks.
> >
> > So , PDF is wrong , right ?
> > what about pool of thread , i.e, one per MessageConsumer ? is it false ?
> > does internal queues exists ?
> >
> > I'm confuse , sorry
> >
> >
> >
> > 2013/9/4 Christian Posta <christian.posta@gmail.com>:
> >> AFAIK...you have a logical thread for the transport that pulls data off
> the
> >> socket, and then a thread for each session. So a single session can have
> >> multiple consumers, but a single session thread would dispatch to the
> >> consumers.
> >>
> >>
> >> On Wed, Sep 4, 2013 at 11:17 AM, Jose María Zaragoza
> >> <demablogia@gmail.com>wrote:
> >>
> >>> Hello:
> >>>
> >>> I'm using Apache ActiveMQ 5.8 and I've got a question about thread
> >>> model on consumer side
> >>> I don't know either there is a thread pool per MessageConsumer or
> >>> there is a only one thread
> >>>
> >>>
> >>> About this link
> >>>
> >>> http://activemq.apache.org/multiple-consumers-on-a-queue.html
> >>>
> >>> "The JMS contract is that only 1 session is used by one thread at once
> >>> - which if you're using consumers means that only 1 consumer can
> >>> receive messages at once if using the same session. So if you want
> >>> concurrent consumption of messages, you need to use different sessions
> >>> for each consumer."
> >>>
> >>>
> >>> But about this link
> >>>
> >>> http://fusesource.com/docs/esbent/7.0/amq_tuning/amq_tuning.pdf
> >>>
> >>> "The second thread layer consists of a pool of threads, where each
> >>> thread is associated with a javax.jms.MessageConsumer instance. Each
> >>> thread in this layer picks the
> >>> relevant messages out of the session queue, inserting each message
> >>> into a queue inside the javax.jms.MessageConsumer instance."
> >>>
> >>>
> >>> What is the true ?
> >>>
> >>> is there a thread pool per MessageConsumer ? or is there a only one
> thread
> >>> ?
> >>>
> >>>
> >>> Thanks and regards
> >>>
> >>
> >>
> >>
> >> --
> >> *Christian Posta*
> >> http://www.christianposta.com/blog
> >> twitter: @christianposta
>



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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message