添加动态侦听器数量(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
}
我有什么办法可以做到这一点?
回答:
您无法使用带注释的@JmsListener
s
进行此操作,但可以通过扩展JmsListenerConfigurer
(如参考文档中所述)以编程方式注册每个侦听器。
由于您将属性作为数组注入…
@Value("${InTopics}")private String[] inTopics;
Spring将拆分列表,并根据列表中的队列数创建一个数组。
然后,您可以遍历数组JmsListenerConfigurer.configureJmsListeners()
并为数组中的每个元素创建一个端点-
您无需事先知道数组的大小。
for (String inTopic : inTopics) { ...
}
以上是 添加动态侦听器数量(Spring JMS) 的全部内容, 来源链接: utcz.com/qa/405219.html