我編寫了一個在Glassfish的Web服務中運行的JMS應用程序(也部署在JBoss中),我注意到在我通過MessageListener MDP處理幾條消息之後,JMS服務器的連接斷開!默認彈簧JmsTemplate關閉連接嗎?
既阿帕奇的ActiveMQ和Glassfish內部JMS經紀人試了一下(openMQ?)
有沒有一種方法來檢查爲什麼發生這種情況?如果這是JmsTemplate的默認行爲,那麼我的替代方法是以正確的方式開發JMS生產者和消費者?
謝謝!
我編寫了一個在Glassfish的Web服務中運行的JMS應用程序(也部署在JBoss中),我注意到在我通過MessageListener MDP處理幾條消息之後,JMS服務器的連接斷開!默認彈簧JmsTemplate關閉連接嗎?
既阿帕奇的ActiveMQ和Glassfish內部JMS經紀人試了一下(openMQ?)
有沒有一種方法來檢查爲什麼發生這種情況?如果這是JmsTemplate的默認行爲,那麼我的替代方法是以正確的方式開發JMS生產者和消費者?
謝謝!
是的,連接關閉。執行方法的See the code:
JmsUtils.closeSession(sessionToClose);
ConnectionFactoryUtils.releaseConnection(
conToClose, getConnectionFactory(), startConnection);
那麼爲什麼連接在JMS服務器上保持打開狀態? – wsb3383 2010-11-02 16:57:54
彈簧JmsTemplate的將關閉,創建所有資源(連接,消費者,生產者..)每次接收或發送消息的時間。 如果您不使用池中的連接,會話,消費者....這將是一個巨大的性能瓶頸。
說了這樣的話,是的,JMSTemplate應該每次關閉連接。
也許你問不同的問題相同的問題(http://stackoverflow.com/questions/4046840/spring-jmstemplate-and-apache-activemq-why-so-many-connections)? – Raghuram 2010-11-02 05:31:07
是的,在調查之後,我認爲它首先是一個ActiveMQ問題。 – wsb3383 2010-11-02 16:58:17