У меня есть 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 jmslisteners имеют разные идентификаторы, но используют один и тот же containerFactory, эти два jmslisteners разделяют один и тот же пул потоков?
IE, если у меня есть 100 сообщений в dest1 и 1 сообщение в dest2, возможно ли, что все доступные потоки будут заняты слушателем a1, и слушатель a2 не сможет работать до большинства сообщенийв a1 потребляются?
В идеале эти 2 должны работать параллельно, и я не хочу создавать некоторые асинхронные будущие задачи в моей обработке.