[SPRING] 동적 인 Listener 수 추가 (Spring JMS)
SPRING동적 인 Listener 수 추가 (Spring JMS)
application.properties 파일에서 언급 한 것처럼 여러 리스너를 추가해야한다는 요구 사항이 있습니다. 아래처럼,
InTopics=Sample.QUT4,Sample.T05,Sample.T01,Sample.JT7
참고 :이 숫자는 더 많거나 적을 수 있습니다.
배열로 가져올 생각입니다.
@Value("${InTopics}")
private String[] inTopics;
하지만 배열에서 여러 수신기를 만드는 방법을 모르겠습니다.
현재, 하나의 주제에 대해 나는 아래에서와 같이하고 있습니다.
@Configuration
@EnableJms
public class JmsConfiguration {
@Value("${BrokerURL}")
private String brokerURL;
@Value("${BrokerUserName}")
private String brokerUserName;
@Value("${BrokerPassword}")
private String brokerPassword;
@Bean
TopicConnectionFactory connectionFactory() throws JMSException {
TopicConnectionFactory connectionFactory = new TopicConnectionFactory(brokerURL, brokerUserName, brokerPassword);
return connectionFactory;
}
@Bean
JmsListenerContainerFactory<?> jmsContainerFactory(TopicConnectionFactory connectionFactory) throws JMSException {
SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPubSubDomain(Boolean.TRUE);
return factory;
}
}
그리고 내 리스너,
@JmsListener(destination = "${SingleTopicName}", containerFactory = "jmsContainerFactory")
public void receiveMessage(Message msg) {
//Do Some Stuff
}
내가 이걸 얻을 수있는 방법이 있니?
해결법
-
==============================
1.주석이 붙은 @JmsListeners로는이 작업을 수행 할 수 없지만 참조 문서에 설명 된대로 JmsListenerConfigurer를 확장하여 프로그래밍 방식으로 각 수신기를 등록 할 수 있습니다.
주석이 붙은 @JmsListeners로는이 작업을 수행 할 수 없지만 참조 문서에 설명 된대로 JmsListenerConfigurer를 확장하여 프로그래밍 방식으로 각 수신기를 등록 할 수 있습니다.
편집하다
당신이 배열로서 속성을 주입하고 있기 때문에 ...
@Value("${InTopics}") private String[] inTopics;
Spring은 목록을 나눠서 목록의 대기열 수를 기반으로 배열을 만듭니다.
그런 다음 JmsListenerConfigurer.configureJmsListeners ()에서 배열을 반복하고 배열의 각 요소에 대한 끝점을 만들 수 있습니다. 미리 배열의 크기를 알 필요는 없습니다.
for (String inTopic : inTopics) { ... }
from https://stackoverflow.com/questions/34063230/adding-dynamic-number-of-listenersspring-jms by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Sprint 부트 데이터 JPA : 'java.util.Set <javax.persistence.EntityManager>'유형의 유효한 bean이 없습니다. (0) | 2019.05.15 |
---|---|
[SPRING] @EnableWs가 Spring 빈에서 aop 프록시를 제거한 이유 (0) | 2019.05.15 |
[SPRING] 봄 세션 + 봄 웹 소켓. 세션 ID를 기반으로 특정 클라이언트에게 메시지 보내기 (0) | 2019.05.14 |
[SPRING] Spring WS 웹 서비스. SAAJ를 사용하여 응답에 첨부 파일 추가 - 엔드 포인트 용 어댑터 없음 (0) | 2019.05.14 |
[SPRING] application.properties에서 값 읽기 Spring Boot (0) | 2019.05.14 |