Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多个DefaultMessageListenerContainer同一队列_Java_Spring_Jboss_Jms_Hornetq - Fatal编程技术网

Java 多个DefaultMessageListenerContainer同一队列

Java 多个DefaultMessageListenerContainer同一队列,java,spring,jboss,jms,hornetq,Java,Spring,Jboss,Jms,Hornetq,使用两个DefaultMessageListenerContainer实例在同一队列上侦听不同的messageSelector会有任何问题吗?是否支持此方案(您是否尝试过) 我希望这两个侦听器能够并行(同时)处理彼此独立的消息。根据messageSelector条件,消息将发送到每个侦听器 我的设置如下: <bean id="messageListener1" class="com.xyz.MyListener" scope="singleton"/> <bean id="me

使用两个DefaultMessageListenerContainer实例在同一队列上侦听不同的messageSelector会有任何问题吗?是否支持此方案(您是否尝试过)

我希望这两个侦听器能够并行(同时)处理彼此独立的消息。根据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>


我正在使用JBossEAP6.2(HornetQ)消息服务器、SpringFramework 3.2.4和SpringJMS-3.0.7。我无法更改技术、第三方JAR或发布版本。此外,我不能使用单独的队列。谢谢

不,这种方法不应该有任何问题。消息选择器用于按照您的配置提供选择性消息消费