У меня есть требование, когда у меня есть сообщения в очереди с настраиваемым количеством селекторов сообщений. Где мне нужно обрабатывать эти сообщения параллельно.Несколько экземпляров DefaultMessageListenerContainer с разными селекторами сообщений
После тщательного рассмотрения я подошел к точке, где использование нескольких DefaultMessageListenerContainers даст хорошие результаты.
так я настроил все
<bean id="parallelProcess"
class="org.springframework.jms.listener.DefaultMessageListenerContainer" scope="prototype">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="autoStartup" value="false"/>
<property name="destinationName" value="parallel.process.queue"/>
<property name="messageListener" ref="messageProcessor"/>
</bean>
и создание DefaultMessageListenerContainers на лету
for (String selector : messageSelectors.getSelectors()) {
parallelProcess.setMessageSelector("Message" + " = '" + selector + "'");
parallelProcess.start();
}
проблема есть, если у меня есть 3 селекторы он создает DefaultMessageListenerContainer только для последнего. то есть, если селекторы = { «ТИП1», «TYPE3», «TYPE3»}
только сообщения с TYPE3 пойманы в сообщении слушателю
Спасибо заранее