我使用spring JMS連接到WSO2MB服務器。一切工作正常,但所有聽衆都分配了相同的ID。爲了使它獨一無二,我提供了clientId,但它不起作用。我沒有找到其他可以提供名稱的領域。在spring jms主題中指定名稱
我甚至在JMS監聽器上提供了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?這就是問題。如果沒有,你可以添加「偵聽器」+ listenerTopic + System.currentTimeMillis() –
我想爲每個服務使用相同的名稱,所以即使多個實例在運行,它們也會共享相同的名稱。但不同的服務應該有不同的名稱 – krmanish007