0
使用DefaultMessageListenerContainer的兩個實例在與不同的messageSelector相同的隊列上進行監聽時是否存在任何問題?這種情況是否得到支持(你有沒有嘗試過)?多個DefaultMessageListenerContainer相同的隊列
我希望兩個偵聽器能夠並行(同時)處理獨立於另一個的消息。根據messageSelector條件,消息將傳遞給每個偵聽器。
我的設置是這樣的:
<bean id="messageListener1" class="com.xyz.MyListener" scope="singleton"/>
<bean id="messageListener2" class="com.xyz.MyListener" scope="singleton"/>
<bean id="listenerContainer1" class="org.springframework.jms.listener.DefaultMessageListenerContainer" scope="singleton">
<property name="connectionFactory" ref="credentialsconnectionfactory"/>
<property name="destination" ref="serialQueue"/>
<property name="messageListener" ref="messageListener1"/>
<property name="concurrentConsumers" value="1"/>
<property name="sessionAcknowledgeModeName" value="AUTO_ACKNOWLEDGE"/>
<property name="sessionTransacted" value="false"/>
<property name="messageSelector"
value="msgName IN ('SomeMessageName1','SomeMessageName2')" />
<property name="taskExecutor">
<bean id="serialTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" scope="singleton">
<property name="corePoolSize" value="1"/>
</bean>
</property>
</bean>
<bean id="listenerContainer1" class="org.springframework.jms.listener.DefaultMessageListenerContainer" scope="singleton">
<property name="connectionFactory" ref="credentialsconnectionfactory"/>
<property name="destination" ref="serialQueue"/>
<property name="messageListener" ref="messageListener2"/>
<property name="concurrentConsumers" value="1"/>
<property name="sessionAcknowledgeModeName" value="AUTO_ACKNOWLEDGE"/>
<property name="sessionTransacted" value="false"/>
<property name="messageSelector" value="msgName NOT IN ('SomeMessageName1','SomeMessageName2')" />
<property name="taskExecutor">
<bean id="serialSCMTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" scope="singleton">
<property name="corePoolSize" value="1"/>
</bean>
</property>
</bean>
我使用JBoss EAP 6.2(HornetQ的)消息服務器,Spring框架3.2.4和Spring-JMS-3.0.7。我無法改變技術,第三方罐子或發佈版本。另外,我不能使用單獨的隊列。謝謝!