2012-04-30 63 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。 –