【发布时间】:2019-02-16 19:14:18
【问题描述】:
我在 Spring Boot 中有 2 个这样的 jmsliteners 设置:
@EnableJms
@JmsListener(id= "A1", destination = "dest1", containerFactory = "factory1")
@JmsListener(id= "A2", destination = "dest2", containerFactory = "factory1")
public void onMessage(String request) {
//some processing
}
@Bean(name = "factory1")
public JmsListenerContainerFactory jmsListenerContainerFactory(ConnectionFactory cachingConnectionFactory){
DefaultJmsListenerContainerFactory jmsListenerContainerFactory = new DefaultJmsListenerContainerFactory();
jmsListenerContainerFactory.setConnectionFactory(cachingConnectionFactory);
jmsListenerContainerFactory.setConcurrency("2-10");
jmsListenerContainerFactory.setSessionTransacted(true);
jmsListenerContainerFactory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
return jmsListenerContainerFactory;
}
由于 2 个 jmslistener 有不同的 id 但共享同一个 containerFactory,这 2 个 jmslistener 是否共享同一个线程池?
IE,如果我在 dest1 有 100 条消息,在 dest2 有 1 条消息,是否所有可用线程都将被侦听器 a1 占用,并且侦听器 a2 将无法运行,直到 a1 的大多数消息都被消费了吗?
理想情况下,这两个应该并行运行,我不想在我的处理中创建一些异步的未来任务。
【问题讨论】:
标签: jms spring-jms