[SPRING] Spring을 사용하여 JMS Listener 시작 및 중지
SPRINGSpring을 사용하여 JMS Listener 시작 및 중지
그래서 질문은 일시적으로 봄을 사용하여 생성 된 jms 리스너를 일시 중지하고 시작하는 방법입니다.
<amq:connectionFactory id="exampleJmsFactory" brokerURL="tcp://${jms.broker.url}" />
<jms:listener-container concurrency="1" connection-factory="exampleJmsFactory" destination-type="queue" message-converter="exampleMessageConverter">
<jms:listener destination="incoming.example.client.queue" ref="exampleProductsMessageConsumer" method="consume"/>
</jms:listener-container>
<bean id="exampleProductsMessageConsumer" class="com.unic.example.jms.receive.JmsExampleProductsMessageConsumer" scope="tenant"/>
그래서 기본적으로 무엇이 문제인가. 우리는 클라이언트가 언제든지 실행할 수있는 init / update 메카니즘을 가지고 있습니다.이 init / update를 durring하고 있습니다. 나는이 시간에 시스템을 사용할 수 없으며 메시지가 왔을 때 어떤 메시지도 사용하지 않기를 원합니다.
그렇다면 API를 사용하여 리스너 또는 리스너 컨테이너 또는 전체 연결을 중단하는 방법. 클래스 AbstractJmsListeningContainer가 중지 / 시작을 찾았지만 어떻게 가져올 수 있습니까? 나는이 jms : listener 및 listener-containers 중 어느 것도 이름이나 이와 유사한 것을 가지고 있지 않다는 것을 의미합니다.
해결법
-
==============================
1.리스너 컨테이너에 ID를 할당 할 수 있습니다. 그런 다음 getBean을 호출하거나 주입하는 방법으로 참조를 얻으십시오. 이렇게하면 시작 / 중지를 호출 할 수있는 AbstractJmsListeningContainer가 제공됩니다.
리스너 컨테이너에 ID를 할당 할 수 있습니다. 그런 다음 getBean을 호출하거나 주입하는 방법으로 참조를 얻으십시오. 이렇게하면 시작 / 중지를 호출 할 수있는 AbstractJmsListeningContainer가 제공됩니다.
-
==============================
2.네, 그 트릭을 않습니다.
네, 그 트릭을 않습니다.
<jms:listener-container concurrency="1" connection-factory="exampleJmsFactory" destination-type="queue" message-converter="exampleMessageConverter"> <jms:listener id="exampleProductsMessageListener" destination="incoming.example.client.queue" ref="exampleProductsMessageConsumer" method="consume"/> </jms:listener-container> DefaultMessageListenerContainer exampleProductsMessageListener= Registry.getApplicationContext().getBean("exampleProductsMessageListener", DefaultMessageListenerContainer.class); exampleProductsMessageListener.stop();
-
==============================
3.messageListenerContainer를 보유하고 stop ()을 호출 할 수도 있습니다.
messageListenerContainer를 보유하고 stop ()을 호출 할 수도 있습니다.
@javax.annotation.Resource //autowire by name private AbstractJmsListeningContainer myMessageListenerContainer; myMessageListenerContainer.stop(); I'm using the more verbose setup of this container: <bean id="myMessageListenerContainer" class="org.springframework.jms.listener.DefaultMes sageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory"/> <property name="destination" ref="myQueue"/> <property name="messageListener" ref="myListener"/> <property name="autoStartup" value="true" /> </bean>
여기서 listenerContainer가 자동으로 시작되지 않게하려면 autoStartup을 false로 설정할 수 있습니다.
from https://stackoverflow.com/questions/11407838/start-and-stop-jms-listener-using-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 보안으로 성공적으로 로그인 한 후 로그인 날짜를 올바르게 업데이트하는 방법은 무엇입니까? (0) | 2019.02.14 |
---|---|
[SPRING] Spring - 처리 후 모든 요청에 대한 헤더 수정 (postHandle에서) (0) | 2019.02.14 |
[SPRING] 컨텍스트 언로드시 연결 풀을 종료하는 방법? (0) | 2019.02.14 |
[SPRING] 스프링 EL 변수 목록 (0) | 2019.02.14 |
[SPRING] 봄 - intum 문자열로 열거 형을 저장 / 검색하는 몽고 (0) | 2019.02.14 |