使用Spring JMS发布订阅实现

时间:2014-05-12 12:33:27

标签: spring jboss jndi spring-jms

我有JmsTemplate的JMS队列实现。当消息放入队列时我希望有多个监听器,即我想使用topic而不是queue。

我没有JMS命名空间的配置。当有人在主题中发送消息时,需要对多个侦听器侦听主题进行哪些更改。

1 个答案:

答案 0 :(得分:1)

我猜你可能正在使用DefaultMessageListenerContainer。可以肯定的是,您希望多个单独的组件收到相同的消息(即您不希望并行处理消息)。

假设我做对了,组件A和组件B应该收到相同的消息,你只需在同一主题上创建两个DefaultMessageListenerContainer实例,然后将pubSubDomain属性设置为true 。确保您没有在侦听器容器上设置任何并发性,或者更好的是,将并发性设置为1以使其显式化。

这会产生类似

的东西
<bean id="listener1"
      class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="pubSubDomain" value="true"/>
    <property name="concurrency" value="1"/>
    <property name="destinationName=" value="...."/> <!-- topic name -->
    <property name="messageListener" ref="...."/> 
</bean>

然后你应该为第二个组件创建一个类似的bean。