activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Tully <gary.tu...@gmail.com>
Subject Re: What is necessary to optimize performance?
Date Thu, 13 Feb 2014 11:47:49 GMT
for some contrast, maybe peek at http://camel.apache.org/sjms.html  -
which is a springless camel jms component

- parallel producers make sense  for persistent messages b/c they
allow more writes to be batched broker side.

- receive vs message listener are very similar b/c the broker prefetch
is in play in both cases.

- selectors only match in memory so there is the possibility of
starvation on really deep queues. Simple matchers have low impact.

On 13 February 2014 09:29, Christian Schneider <chris@die-schneider.net> wrote:
> Hi all,
>
> I am currently rewriting the CXF jms transport to get rid of spring jms. So
> two parts that I needed to replace are the JmsTemplate and the
> DefaultMessageListenerContainer.
>
> So the question is which features of these should I recreate and which are
> not necessary. Some more concrete questions below:
>
> Lets first look at the sender side. I am currently working with a single
> connection per CXF conduit and open sessions on it per thread.
> On the receiving side I use either consumer.receive() or a message listener
> depending if the incoming CXF call is synchronous or asynchronous.
>
> 1. Will it make sense to use more than one connection in parallel? ( I
> observed that all sessions seem to be synchronized when activemq sends the
> data. On the other hand it all has to go through the one network anyway).
> Using several connections is problematic in the case of a temporary reply
> queue as I have to make sure the queue is created by the same connection
> that then sends and receives on it. I could use one temp queue per
> connection of course but this would make the code a lot more complicated.
> 2. Is there a difference performance wise between consumer.receive and a
> message listener?
> 3. I use a messageSelector for correlation. How much does this impact
> performance?
>
> The next one is the server side.
>
> DefaultMessageListenerContainer uses several consumers in parallel in
> addition to a ExecutorService to then parallelize the calls to the
> MessageListener.
> It also seems to spawn one thread per consumer where it polls using
> consumer.receive().
>
> 1. I currently use one connection and one consumer and only after that
> parallelize using an ExecutorService. Should I use more than one consumer
> and or more than one connection ?
>
> If anyone wants to look at the current sources. They can be found in the
> trunk of cxf. For convenience look here:
> https://github.com/apache/cxf/tree/trunk/rt/transports/jms
>
> I would be happy about any feedback regarding the implementation.
>
> Best regards
>
> Christian
>
>
>
> --
> Christian Schneider
> http://www.liquid-reality.de
>
> Open Source Architect
> http://www.talend.com
>



-- 
http://redhat.com
http://blog.garytully.com

Mime
View raw message