You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by William Blackburn <wj...@mac.com> on 2006/09/22 19:52:50 UTC

Trying to understand ServiceMix Pojos, onMessageExchange, and Threading

My application is a series of Servicemix 'Pojo' components. Each  
component receives a message exchange and operates on the content  
using a synchronous call to a Spring managed service-provider wired  
into the component in servicemix.xml

I am trying to understand how this arrangement will scale, especially  
on multi-cpu servers. I guess I'm a bit out of my depth in the  
source, 'cause I can't figure out if the 'onMessageExchange' events  
are fired from separate, individual threads, a pool of threads, or a  
single message-processing thread. I want to take advantage of multi- 
processing, and certainly don't want calls to heavily loaded  
components queuing up if they don't have to.

Can anyone clarify this for me? Should I implement my own multi- 
threading within my components, or is it built in to the underlying  
message handling/routing system?

Thanks,

BJ

Re: Trying to understand ServiceMix Pojos, onMessageExchange, and Threading

Posted by Guillaume Nodet <gn...@gmail.com>.
Components implementing MessageExchangeListener
need to be thread safe, like servlets for example.
The onMessageExchange method will be called
from multiple threads.

Components that do not implement MessageExchangeListener
need to poll the delivery channel for JBI exchanges, so they
control their own threading model.

On 9/22/06, William Blackburn <wj...@mac.com> wrote:
> My application is a series of Servicemix 'Pojo' components. Each
> component receives a message exchange and operates on the content
> using a synchronous call to a Spring managed service-provider wired
> into the component in servicemix.xml
>
> I am trying to understand how this arrangement will scale, especially
> on multi-cpu servers. I guess I'm a bit out of my depth in the
> source, 'cause I can't figure out if the 'onMessageExchange' events
> are fired from separate, individual threads, a pool of threads, or a
> single message-processing thread. I want to take advantage of multi-
> processing, and certainly don't want calls to heavily loaded
> components queuing up if they don't have to.
>
> Can anyone clarify this for me? Should I implement my own multi-
> threading within my components, or is it built in to the underlying
> message handling/routing system?
>
> Thanks,
>
> BJ
>


-- 
Cheers,
Guillaume Nodet