我正在尝试弄清楚如何方便地暂停所有使用者/消息监听器,而我的应用程序处于受控维护模式。该应用程序正在使用ActiveMQ 5.13.3客户端库。
前段时间我已从一个PooledConnectionFactory
切换到ActiveMQConnectionFactory amcf = new ActiveMQConnectionFactory(config.getMessageBrokerUrl());
amcf.setTrustedPackages(Arrays.asList(new String[] {
"some.package.or.other",
"java.lang",
"java.util"
}));
connectionFactory = new PooledConnectionFactory(amcf);
connectionFactory.setCreateConnectionOnStartup(true);
。它的设置如下:
$("#UpdateTable tr").click(function() {
$(this).toggleClass('selected').siblings().removeClass('selected').children().removeClass('selectedtd');
$(this).children().toggleClass('selectedtd');
});
消费者和生产者从连接池“创建”(=获取)连接,并在完成后“关闭”它,将其返回到池中。显然,对于MessageListeners,它在启动时获取一次,并在应用程序关闭时返回。
ActiveMQConnection.stop()
说它暂时停止连接传入的消息。完全符合我的要求,只有池显然包含许多连接,而不仅仅是一个。
如何暂停 ActiveMQ连接池的所有连接?
答案 0 :(得分:0)
我猜你必须采用其他方式暂停使用池化连接池的邮件传递。例如,在使用spring DMLC时可能会看到这个问题(可能不适合您):Start and Stop JMS Listener using Spring
您也可以从代理端暂停该队列。队列的JMX MBean上有暂停/恢复操作。见附件截图。
它没有回答关于暂停客户端的问题,但可以解决您的问题。