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

时间:2012-10-23 15:59:54

标签: java spring jms spring-jms

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

<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>

接收来自不同主题的消息。线程安全吗?

正如您所看到的,它们使用相同的Message Listener,它也依赖于其他一些spring bean。所有消息都将由同一类中的相同onMessage方法接收。

public class SomeKlass implements MessageListener {


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

}

有人可以告诉我这类问题的最佳做法。来自这两个主题的消息需要以相同的方式处理,因此我只需要一个MessageListener。

由于

1 个答案:

答案 0 :(得分:2)

是的,只要您在SomeKlass中没有任何您似乎没有的州,这绝对没问题。

相关问题