为什么rabbitmq fanout交换只有一个订阅可以收到消息?

时间:2015-03-01 11:00:53

标签: java spring rabbitmq

我创建了一个rebbitmq扇出交换示例集成spring,但只有一个订阅可以收到消息,为什么?flow是我的配置: 发布配置                       

<rabbit:connection-factory id="connectionFactory" username="dev" password="dev" host="localhost" />

<rabbit:template id="template" connection-factory="connectionFactory" reply-timeout="2000"   exchange="2remoting.exchange" />

<rabbit:admin connection-factory="connectionFactory" />

<rabbit:queue name="remoting.queue1" />


<rabbit:fanout-exchange name="2remoting.exchange" >
    <rabbit:bindings>
        <rabbit:binding queue="remoting.queue1"/>
    </rabbit:bindings>
</rabbit:fanout-exchange>

订阅配置                                     

<bean id="service" class="com.hzins.bsp.dev.TestServiceImpl" />

<rabbit:connection-factory id="connectionFactory" username="dev" password="dev" host="localhost" />

<rabbit:template id="template" connection-factory="connectionFactory" />

<rabbit:queue name="remoting.queue1" />

<rabbit:listener-container connection-factory="connectionFactory">
    <rabbit:listener ref="listener" queue-names="remoting.queue1" />
    <rabbit:listener ref="listener" queue-names="remoting.queue1" />
</rabbit:listener-container>

1 个答案:

答案 0 :(得分:2)

不,你误解了fanout exchange的定义。它将消息放入所有绑定队列。但不是订阅这些队列。

对于相同的队列,它没有多少订阅者(侦听器)的值。它们只是并发消费者,只有其中一个将从队列中收到消息。

请阅读更多RabbitMQ文档。