ActiveMQ:使用连接池时暂停/恢复使用者

时间:2016-09-27 13:50:59

标签: java activemq

我正在尝试弄清楚如何方便地暂停所有使用者/消息监听器,而我的应用程序处于受控维护模式。该应用程序正在使用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连接池的所有连接?

1 个答案:

答案 0 :(得分:0)

我猜你必须采用其他方式暂停使用池化连接池的邮件传递。例如,在使用spring DMLC时可能会看到这个问题(可能不适合您):Start and Stop JMS Listener using Spring

您也可以从代理端暂停该队列。队列的JMX MBean上有暂停/恢复操作。见附件截图。

它没有回答关于暂停客户端的问题,但可以解决您的问题。

pause queue jmx operation in jconsole