我正在使用spring连接到WSO2MB服务器。一切正常,但所有侦听器都被分配了相同的id。为了使其独一无二,我提供了clientId,但它不起作用。我没有找到任何其他领域,我可以提供名称。
我甚至在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 {
}发布于 2017-05-04 21:51:51
订阅名称使连接名成为唯一,并解决了我的问题。
@JmsListener(
destination = "${default-queue-name-to-listen}",
subscription = "${default-queue-name-to-listen}"
)
public void receiveMessage(Message<T> message) throws JMSException {}发布于 2017-05-03 13:10:16
每个连接都需要一个唯一的clientID。
void clientID) 设置要用于创建的连接的clientID。请注意,这只能同时由一个连接使用,所以通常在连接上设置clientID是一个更好的主意。
您的解决方案是使用org.springframework.jms.connection.SingleConnectionFactory
https://stackoverflow.com/questions/43758044
复制相似问题