我有一个要求,我在队列中有消息,消息选择器的数量是可配置的。我需要并行处理这些消息的地方。
经过仔细考虑,我发现使用多个 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。即,如果选择器={“TYPE1”,“TYPE3”,“TYPE3”}
只有 TYPE3 的消息被消息监听器捕获
先感谢您