2012-04-30 130 views
2

在点当我执行路由到一个-JMS队列如下调整Apache的骆驼JMS路由器性能

.inOut("jmsGF:queue:INQueue?replyTo=queue:OUTQueue") 

我观察到骆驼大概需要900毫秒它实际上将消息发送给JMS之前队列。有没有办法减少这个过程/配置时间?谢谢。

2012-04-30 14:51:22,098 SendProcessor Endpoint[jmsGF://queue:INQueue?replyTo=queue:OUTQueue] 
2012-04-30 14:51:22,833 Configuration$CamelJmsTemplate - Executing callback on JMS Session: ConnectionID=7685453259737775872, SessionID=7685453259737832448 
2012-04-30 14:51:22,973 JmsConfiguration - Sending JMS message to: Oracle GlassFish(tm) Server MQ Destination 
+1

我解决了延迟通过使用org.springframework.jms.connection.CachingConnectionFactory(ref:http://bsnyderblog.blogspot.com/2010/02/using-spring-jmstemplate-to-send-jms.html) – James

+0

感谢您的调查! –

回答

0

为你找到了,关键是使用某种形式的JMS生产者连接

也,谨防使用消费者的联系春季CachingConnectionFactory的连接池,因为它可能会导致问题(特别是与轮询消费者等)

看到这个页面的一般信息:http://camel.apache.org/activemq.html

0

如果使用骆驼2.9,那么你可以使用专属的replyTo队列,这也是更快的。在Camel JMS wiki页面查看有关JMS请求/回复的详细信息。它还具有指针,指导如何改进旧版本的性能,以及何时不能对排队使用排他性回复。 http://camel.apache.org/jms

+0

专有的replyto功能对于性能非常好。这是为了发送,而不是响应。很高兴看到一些内置的缓存JMS会话的容器缓存内置到Camel中,而对手动弹簧配置的依赖程度较低。我可能会提出一段时间的骆驼功能请求。 –

+0

所以独享replyTo是一种用JMSCorrelationID忽略选择器的方式,在接收jms响应时确实更快。顺便说一下,Camel JMS wiki中的'.inOut()。到(“activemq:queue:foo?replyTo = bar?replyToType = Exclusive”)'有一个错字“?”在“replyToType”前面。它应该是“&”(我希望有人拥有超级编辑能力可以纠正它:-) – James

+0

是的,一个通用的JMS缓存池会很好。也为了PPL,不想为了这个而在春天拖拉。一个新的更简单的JMS组件在非Spring依赖的工作中,例如只使用普通的JMS API。 –