首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭Apache ActiveMQ

关闭Apache ActiveMQ
EN

Stack Overflow用户
提问于 2016-09-21 15:00:22
回答 1查看 2.5K关注 0票数 2

我正在运行一个带有嵌入式ActiveMQ服务器(5.10.0)的Spring (1.3.5)控制台应用程序,它可以很好地接收消息。但是,我在毫无例外地关闭应用程序时遇到了困难。

在命中Ctrl之后,每个队列都会引发此异常一次:

代码语言:javascript
复制
2016-09-21 15:46:36.561 ERROR 18275 --- [update]] o.apache.activemq.broker.BrokerService   : Failed to start Apache ActiveMQ ([my-mq-server, null], {})

java.lang.IllegalStateException: Shutdown in progress
    at java.lang.ApplicationShutdownHooks.add(ApplicationShutdownHooks.java:66)
    at java.lang.Runtime.addShutdownHook(Runtime.java:211)
    at org.apache.activemq.broker.BrokerService.addShutdownHook(BrokerService.java:2446)
    at org.apache.activemq.broker.BrokerService.doStartBroker(BrokerService.java:693)
    at org.apache.activemq.broker.BrokerService.startBroker(BrokerService.java:684)
    at org.apache.activemq.broker.BrokerService.start(BrokerService.java:605)
    at org.apache.activemq.transport.vm.VMTransportFactory.doCompositeConnect(VMTransportFactory.java:127)
    at org.apache.activemq.transport.vm.VMTransportFactory.doConnect(VMTransportFactory.java:56)
    at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:65)
    at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:314)
    at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:329)
    at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:302)
    at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:242)
    at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:283)
    at org.apache.activemq.jms.pool.PooledConnectionFactory$1.makeObject(PooledConnectionFactory.java:96)
    at org.apache.activemq.jms.pool.PooledConnectionFactory$1.makeObject(PooledConnectionFactory.java:93)
    at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041)
    at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:357)
    at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:279)
    at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:243)
    at org.apache.activemq.jms.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:212)
    at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:180)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:413)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:398)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:925)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:899)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1075)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
2016-09-21 15:46:36.564  INFO 18275 --- [update]] o.apache.activemq.broker.BrokerService   : Apache ActiveMQ 5.12.3 (my-mq-server, null) is shutting down

当DefaultMessageListenerContainer试图启动一个ActiveMQ服务器时,我觉得这是没有意义的。我已经将BrokerService的阶段设置为Integer.MAX_INT -1,将DefaultJmsListeningContainerFactory的阶段设置为Integer.MAX_INT,以便在ActiveMQ服务器停止之前使其消失。

我在我的主()中有这个:

代码语言:javascript
复制
public static void main(String[] args) {
    final ConfigurableApplicationContext context = SpringApplication.run(SiteServer.class, args);
    context.registerShutdownHook();
}

我尝试将守护进程设置为true,如下所示:Properly Shutting Down ActiveMQ and Spring DefaultMessageListenerContainer

有什么想法吗?谢谢!=)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-21 19:25:26

找到了。当Camel上下文在BrokerService之后关闭时,就会发生此问题。增加适当的生命周期管理,使骆驼在解决问题之前被关闭。现在,一切都是以一种干净的方式关闭,没有错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39620134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档