thanks Dave. By increasing the "concurrentConsumers" on my queues, I'm able
to solve the slow consumer issues. Now I'm faced with slow overall
throughput. I monitor the queues and they are almost always empty and the
CPU load is relatively low.
Here is my Camel route (Camel 1.6.1 on SMX 3.3.1)...
from("jetty:http://localhost:7001/deliver")
.process(new HTTPInboundService()) //needed to convert InputStream to
String
.to("activemq:GatewayMsgQueue");
from("activemq:GatewayMsgQueue?concurrentConsumers=20")
.to("activemq:processInboundMsg");
from("activemq:processInboundMsg?concurrentConsumers=20")
.convertBodyTo(DOMSource.class)
.to("jbi:service:http://localhost/eda/messageDecoder?mep=in-out")
.convertBodyTo(String.class)
.to("activemq:persistMsg");
from("activemq:persistMsg?concurrentConsumers=20")
.to("jbi:service:http://localhost/eda/messagePersister?mep=in-out")
.convertBodyTo(String.class)
.to("activemq:publishMsg");
from("activemq:publishMsg?concurrentConsumers=20")
.convertBodyTo(DOMSource.class)
.multicast().to("jbi:service:http://localhost/eda/portalJMSService?mep=in",
"jbi:service:http://localhost/eda/portalJMSService2?mep=in");
If I remove the JBI service calls to decode/persist the message, I'm able to
process 500+ msgs/second. Otherwise, I'm getting closer to 40 msgs/second
with the full route in place. I'm not sure what else I can do because the
queues to decode/persist/publish are always empty and the threads seem
mostly idle. It seems like the throttle is just slowed on the inbound
message consumption too much for some reason (it backs up on the service
that supplies the inbound HTTP requests).
Is there some other configuration that is necessary? I've seen reference to
the thread-pools configuration, but I'm sure how this applies exactly.
thanks again
-----
Ben O'Day
Vektrel - Senior Consultant
--
View this message in context:
http://www.nabble.com/fast-SE-producer-and-slow-SE-consumer-tp8791741p24421396.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.