2016-09-23 41 views
0

我有一個Java應用程序使用ActiveMQ中的消息。我有使用嵌入式ActiveMQ的JUnit測試用例(版本:5.10.0)。測試用例執行正常,但在執行後引發此錯誤。我嘗試使用最新版本(5.14.0)並引發錯誤。雖然5.8.0沒有錯誤。我看到一個related thread,它描述了ActiveMQ 5.6.0版的相同問題,但看不到解決方案。欣賞你的投入。使用嵌入式ActiveMQ的JUnit測試拋出javax.jms.JMSException:對方停止

@Bean 
public ConnectionFactory jmsConnectionFactory() { 
    ActiveMQConnectionFactory amqConnectionFactory = new ActiveMQConnectionFactory("vm://my-amq-host"); 
    CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(amqConnectionFactory); 
    cachingConnectionFactory.setCacheConsumers(false); 
    return cachingConnectionFactory; 
} 

2016年9月23日13:53:37083 WARN [org.springframework.jms.connection.CachingConnectionFactory] ​​[ActiveMQ的連接執行人:VM://我-AMQ主機#0 ] [301]遇到JMSException - 重置基礎JMS連接 javax.jms.JMSException:peer(vm:// my-amq-host#1)停止。 在org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54) 在org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1998) 在org.apache.activemq.ActiveMQConnection.onException( ActiveMQConnection.java:2017) 在org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101) 在org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:126) 的組織。 apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101) at org.apache.activemq.transport.vm.VMTransport.stop(VMTransport.java:206) at org.apache.activemq.transport.TransportFilter。停止(TransportFilter.java:65) at org.apache.activemq.tr ansport.TransportFilter.stop(TransportFilter.java:65) 在org.apache.activemq.transport.ResponseCorrelator.stop(ResponseCorrelator.java:132) 在org.apache.activemq.broker.TransportConnection.doStop(TransportConnection.java: 1102) at org.apache.activemq.broker.TransportConnection $ 4.run(TransportConnection.java:1068) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 引起:org.apache.activemq.transport.TransportDisposedIOException:peer(vm:// my-amq主機#1)停止。 ... 9個

回答

0

我的猜測是,測試代碼以這樣一種方式運行,如果沒有正在運行的創建與VM傳送,但連接時連接工廠創建一個VM內經紀商在完全清理並關閉之前實際捕獲VM內代理的實例。如果沒有完全看到測試代碼,那麼很難說。

讓測試創建自己的BrokerService通常是一個好主意,您可以控制它並讓工廠使用帶有create=false URI選項的VM傳輸。

相關問題