主端结束时,ActiveMQ传输线程不会终止

时间:2015-04-17 09:15:28

标签: java multithreading activemq

这就是我开始连接的方式:

factory = new PooledConnectionFactory(brokerURL);

brokerURL is "failover:(tcp://host1.com:61616,tcp://host2.com:61616)?randomize=false&jms.useAsyncSend=false&jms.dispatchAsync=false&maxReconnectAttempts=30&maxReconnectDelay=3000"

开始连接:

connection = factory.createConnection("", ""); 
connection.start();

应用程序在连接关闭之前执行其常规任务:

connection.close();

main方法已经完成,但JVM没有,因为仍有一些ActiveMQ线程处于活动状态:

Thread [ActiveMQ Transport: tcp://host1.com/ip_address:61616@2455] (Running)    
Daemon Thread [ActiveMQ InactivityMonitor ReadCheckTimer] (Running) 
Daemon Thread [ActiveMQ InactivityMonitor WriteCheckTimer] (Running)    
Daemon Thread [ActiveMQ InactivityMonitor Worker] (Running) 

我应该如何关闭它,以便上面的线程也会关闭。 ActiveMQ版本5.10.0

提前致谢

2 个答案:

答案 0 :(得分:1)

使用(PooledConnectionFactory)工厂修复.stop();

答案 1 :(得分:0)

或者将“daemon = true”添加为连接url参数。

根据http://activemq.apache.org/tcp-transport-reference.html

  

如果为true,则传输线程将以守护进程模式运行

即使守护程序线程正在运行,主JVM线程也会退出。