2016-09-27 1 views
0

Я пытаюсь выяснить, как удобно приостановить все потребители/сообщение-слушателей, в то время как мое приложение находится в режиме контролируемого технического обслуживания. Приложение использует клиентские библиотеки ActiveMQ 5.13.3.ActiveMQ: пауза/резюме потребители при использовании пула подключений

Некоторое время назад я переключился с одного 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); 

Потребители и производители «создать» (= выборки) соединение из пула соединений и «закрыть», когда они сделаны, возвращая его в бассейн. Очевидно, что в случае MessageListeners он получается один раз при запуске и возвращается при завершении работы приложения.

ActiveMQConnection.stop() says Временно останавливает доставку входящих сообщений. Идеально подходит для того, что я хочу, только пул, очевидно, содержит много соединений, а не только один.

Как вы делаете паузу все соединения пула соединений ActiveMQ?

ответ

0

Я думаю, вы должны прибегнуть к другим средствам приостановки доставки сообщений с использованием объединенных пулов соединений. См. Этот вопрос, например, при использовании весны DMLC (возможно, не так): Start and Stop JMS Listener using Spring

Вы также можете приостановить эту очередь со стороны брокера. На JMX MBean очереди выполняется операция паузы/возобновления. См. Прилагаемый скриншот.

Это не дает ответа на вопрос о приостановке клиента, но может решить вашу проблему.

pause queue jmx operation in jconsole

+0

Спасибо. Приостановка очереди для меня не является решением, другие клиенты все равно будут обмениваться ею. Вариант использования - это управление отключением отдельных узлов кластера. Я рассмотрю, как остановить связь, а не соединение. – Hank