添加动态侦听器数量(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

}

我有什么办法可以做到这一点?

回答:

您无法使用带注释的@JmsListeners

进行此操作,但可以通过扩展JmsListenerConfigurer(如参考文档中所述)以编程方式注册每个侦听器。

由于您将属性作为数组注入…

@Value("${InTopics}")

private String[] inTopics;

Spring将拆分列表,并根据列表中的队列数创建一个数组。

然后,您可以遍历数组JmsListenerConfigurer.configureJmsListeners()并为数组中的每个元素创建一个端点-

您无需事先知道数组的大小。

for (String inTopic : inTopics) {

...

}

以上是 添加动态侦听器数量(Spring JMS) 的全部内容, 来源链接: utcz.com/qa/405219.html

回到顶部