2
我正在使用ActiveMQ排隊電子郵件,消費者讀取隊列併發送電子郵件。ActiveMQ如何處理關閉的會話
在啓動時,我註冊一個生產者並永久地緩存它。
PooledConnectionFactory factory = new PooledConnectionFactory(new ActiveMQConnectionFactory(jmsBrokerUserName, jmsBrokerPassword, activeMQBrokerURL));
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
MessageProducer producer = session.createProducer(destination);
隨着連接關閉,生產者不時排隊消息。
Caused by: javax.jms.IllegalStateException: The Session is closed
at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:767) ~[activemq-client-5.10.0.jar:5.10.0]
at org.apache.activemq.ActiveMQSession.configureMessage(ActiveMQSession.java:755) ~[activemq-client-5.10.0.jar:5.10.0]
at org.apache.activemq.ActiveMQSession.createTextMessage(ActiveMQSession.java:438) ~[activemq-client-5.10.0.jar:5.10.0]
at org.apache.activemq.jms.pool.PooledSession.createTextMessage(PooledSession.java:242) ~[activemq-jms-pool-5.10.0.jar:5.10.0]
有人請讓我知道什麼是處理閉合會議的最佳方式?我應該重新註冊我的製片人嗎?或者有沒有辦法重開會議?
而連接呢?連接對象可以被緩存嗎?或者從它的PooledConnectionFactory開始,每次產生消息時都可以調用create connection。 –
jms連接對象可以在任何線程上被緩存和使用,但是正如你所說,它將成爲連接池的一部分,所以如果每次調用createConnection都不應該有實際成本。 – whitfiea