스프링 JMS를 사용하여 WSO2MB 서버에 연결합니다. 모든 것이 잘 작동하지만 모든 청취자에게는 같은 ID가 할당됩니다. 고유하게 만들기 위해 clientId를 제공했지만 작동하지 않습니다. 나는 그 이름을 제공 할 수있는 다른 분야를 찾지 못하고있다.스프링 jms 토픽에서 할당 이름
JMS Listener에도 id를 제공했지만 성공하지는 못했습니다.
@Bean
@ConditionalOnProperty(name="my.listener.active", matchIfMissing = true)
public JmsListenerContainerFactory jmsListenerContainerFactory(@Qualifier("listenerConnectionFactory") ConnectionFactory connectionFactory) throws URLSyntaxException {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setClientId("listener"+listenerTopic);
if (Boolean.valueOf(listenerTopic)) {
factory.setSubscriptionDurable(true);
factory.setPubSubDomain(true);
}
return factory;
}
@JmsListener(destination = "${default-queue-name-to-listen}", id = "${default-queue-name-to-listen}")
public void receiveMessage(final Message<T> message) throws JMSException {
}
응용 프로그램을 다시 시작한 후에 동일한 ID를 사용해야합니까 ?? 이게 문제 야. "listener"+ listenerTopic + System.currentTimeMillis()를 추가 할 수 없다면 –
각 서비스에 대해 동일한 이름을 원하므로 여러 인스턴스가 실행중인 경우에도 동일한 이름을 공유합니다. 하지만 다른 서비스는 다른 이름을 가져야합니다. – krmanish007