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()수신 메시지의 연결 전달을 일시적으로 중지합니다. 내가 원하는 것만 큼 완벽하게, 수영장에만 분명히 많은 연결이 포함되어 있습니다.

어떻게 일시 중지 하시겠습니까? 전체 ActiveMQ 연결 풀 연결?

답변

0

다른 방법으로 풀링 된 연결 풀을 사용하여 메시지 배달을 일시 중지해야합니다. 스프링 DMLC를 사용할 때 다음과 같은 질문을 참조하십시오 (사용자에게 적합하지 않을 수 있음). Start and Stop JMS Listener using Spring

또한 브로커 측에서 해당 대기열을 일시 중지 할 수 있습니다. 대기열의 JMX MBean에 일시 중지/다시 시작 작업이 있습니다. 첨부 된 스크린 샷보기

클라이언트를 일시 중지하는 것에 대한 대답은 아니지만 문제를 해결할 수 있습니다.

pause queue jmx operation in jconsole

+0

감사합니다. 대기열을 일시 중지하는 것은 나에게 해결책이 아니며, 다른 클라이언트는 여전히 그 위에 통신해야합니다. 유스 케이스는 클러스터의 개별 노드의 종료 제어입니다. 연결보다는 messageListener를 멈추는 방법을 살펴 보겠습니다. – Hank

관련 문제