Just to recap what we found today. The reason for the bad performance
seems to be that camel polls for replies in the producer with a default
of 1000ms. Setting receiveTimeout=10 on the producer seems to speed up
the route a lot.
After we found that your colleague also found that this is actually
documented in the camel-jms documentation :-)
http://camel.apache.org/jms.htmlI added the relevant section below.
I am not really sure why the receiveTimeout really controls the polling
but it works. In any case the option name looks a bit misleading. I
guess pollingIntervall would
be more acurate.
Christian
-----
Request-reply over JMS and using a shared fixed reply queue
If you use a fixed reply queue when doing Request Reply
<
http://camel.apache.org/request-reply.html> over JMS as shown in the
example below, then pay attention.
from(xxx)
.inOut().to("activemq:queue:foo?replyTo=bar")
.to(yyy)
In this example the fixed reply queue named "bar" is used. By default
Camel assumes the queue is shared when using fixed reply queues, and
therefore it uses a JMSSelector to only pickup the expected reply
messages (eg based on the JMSCorrelationID). See next section for
exclusive fixed reply queues. That means its not as fast as temporary
queues. You can speedup how often Camel will pull for reply messages
using the receiveTimeout option. By default its 1000 millis. So to make
it faster you can set it to 250 millis to pull 4 times per second as shown:
from(xxx)
.inOut().to("activemq:queue:foo?replyTo=bar&receiveTimeout=250")
.to(yyy)
Notice this will cause the Camel to send pull requests to the message
broker more frequent, and thus require more network traffic.
It is generally recommended to use temporary queues if possible.
Am 30.04.2012 15:52, schrieb weberj: