具有相同容器工厂的@jmslistener是否共享线程池

具有相同容器工厂的@jmslistener是否共享线程池,jms,spring-jms,Jms,Spring Jms,在spring boot中,我有2个JMSlitener设置如下: @EnableJms @JmsListener(id= "A1", destination = "dest1", containerFactory = "factory1") @JmsListener(id= "A2", destination = "dest2", containerFactory = "factory1") public void onMessage(String request) { //som

在spring boot中,我有2个JMSlitener设置如下:

@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;
}
由于两个JMSListener具有不同的id但共享相同的containerFactory,这两个JMSListener是否共享相同的线程池

也就是说,如果我在dest1有100条消息,在dest2有1条消息,是否所有可用的线程都将被侦听器a1占用,并且侦听器a2将无法运行,直到a1的大部分消息被消耗


理想情况下,这两个任务应该并行运行,我不想在处理过程中创建一些异步的未来任务。

它们是独立的;默认情况下,它们各自使用一个单独的
SimpleAsyncTaskExecutor

您可以使用
TaskExecutor
配置工厂,容器将使用同一个,但是,如果它是池执行器,它必须有足够的线程来支持所有侦听器的最大总并发性