Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 使用相同onMessage的多个MessageListener的线程安全性?_Java_Spring_Jms_Spring Jms - Fatal编程技术网

Java 使用相同onMessage的多个MessageListener的线程安全性?

Java 使用相同onMessage的多个MessageListener的线程安全性?,java,spring,jms,spring-jms,Java,Spring,Jms,Spring Jms,如何确保两个侦听器容器: <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="messageListener" ref="MessageListener" /> <property name="connectionFactory" ref="tcf" />

如何确保两个侦听器容器:

<bean id="listenerContainer"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="messageListener" ref="MessageListener" />
    <property name="connectionFactory" ref="tcf" />
    <property name="destinationName" value="${jms-topic}" />
    <property name="pubSubDomain" value="true" />
</bean>

<bean id="listenerContainer-2"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="messageListener" ref="MessageListener" />
    <property name="connectionFactory" ref="tcf" />
    <property name="destinationName" value="${jms-topic-2}" />
    <property name="pubSubDomain" value="true" />
</bean>

<bean id="MessageListener" class="com.my.url.jms.listener.DefaultMessageListener">
    <property name="transformer" ref="transformer" />
    <property name="publisher" ref="publisher" />
</bean>
有人能给我建议解决这类问题的最佳方法吗。来自这两个主题的消息需要以相同的方式处理,因此我只需要一个MessageListener


谢谢

是的,只要你在
SomeKlass
中没有任何看起来没有的状态,这是绝对好的。

谢谢,但你能为我详细说明一下吗?在现实中,onMessage方法内部有很多处理过程。为了这个问题,我把它拿了出来。我将编辑并添加更多信息。共享状态会产生线程问题-如果
SomeKlass
中有一个实例变量,那么这个变量状态可能会被多个线程修改,并导致线程安全问题。由于
SomeKlass
中没有任何实例变量,因此onMessage是线程安全的-有关相关问题,请参阅
public class SomeKlass implements MessageListener {


    public void onMessage(Message message) {        
            //Do some work
    }

}