ActiveMQ:使用连接池时 pause/resume 消费者
ActiveMQ: pause/resume consumers when using connection pooling
我想弄清楚如何在我的应用程序处于受控维护模式时方便地暂停所有 consumers/message-listeners。该应用程序正在使用 ActiveMQ 5.13.3 客户端库。
前段时间我已经从一个 ActiveMQConnectionFactory
切换到一个 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);
消费者和生产者"create"(=获取)连接池中的连接,并在完成后"close"将其返回到池中。显然,在 MessageListeners 的情况下,它在启动时获取一次并在应用程序关闭时返回。
ActiveMQConnection.stop()
说它 暂时停止传入消息的连接传递。 非常适合我想要的,只有池显然包含许多连接,而不只是一个。
如何暂停一个ActiveMQ连接池的所有个连接?
我想您必须求助于其他方法来使用连接池暂停消息传递。例如,在使用 spring DMLC 时请参阅此问题(对您而言可能不是这种情况):Start and Stop JMS Listener using Spring
您也可以从代理端暂停该队列。在队列的 JMX MBean 上有一个 pause/resume 操作。请参阅随附的屏幕截图。
它没有回答有关暂停客户端的问题,但可能会解决您的问题。
我想弄清楚如何在我的应用程序处于受控维护模式时方便地暂停所有 consumers/message-listeners。该应用程序正在使用 ActiveMQ 5.13.3 客户端库。
前段时间我已经从一个 ActiveMQConnectionFactory
切换到一个 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);
消费者和生产者"create"(=获取)连接池中的连接,并在完成后"close"将其返回到池中。显然,在 MessageListeners 的情况下,它在启动时获取一次并在应用程序关闭时返回。
ActiveMQConnection.stop()
说它 暂时停止传入消息的连接传递。 非常适合我想要的,只有池显然包含许多连接,而不只是一个。
如何暂停一个ActiveMQ连接池的所有个连接?
我想您必须求助于其他方法来使用连接池暂停消息传递。例如,在使用 spring DMLC 时请参阅此问题(对您而言可能不是这种情况):Start and Stop JMS Listener using Spring
您也可以从代理端暂停该队列。在队列的 JMX MBean 上有一个 pause/resume 操作。请参阅随附的屏幕截图。
它没有回答有关暂停客户端的问题,但可能会解决您的问题。