java - 为什么rabbitmq fanout Exchange只能收到一个订阅消息?

标签 java spring rabbitmq

我创建了一个rebbitmq fanout Exchange示例集成spring,但只有一个订阅可以接收消息,为什么?我的配置如下: 发布配置

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

最佳答案

不,您误解了扇出交换的定义。它将消息放入所有绑定(bind)队列,但不订阅这些队列。

同一个队列有多少订阅者(监听器)没有值(value)。他们只是并发消费者,只有其中一个会从队列中接收消息。

请阅读更多 RabbitMQ 文档。

关于java - 为什么rabbitmq fanout Exchange只能收到一个订阅消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792778/

相关文章:

c# - 如何使用 MassTransit.Multibus 配置 IRequestClient<T> 和 IConsumer<T>?

python - 如何使用 Python 在 RabbitMQ 中删除用户

queue - 如何在Rabbit MQ中删除队列

java - Spring Boot,@Autowire 使用@Configurable 和加载时间织入非托管类

spring - apache httpclient clientprotocol classnotfoundexception与程序args时

java - 对这个泛型用例感到困惑

java - 如何在完整项目中以 Debug模式跟踪 System.out.println

java - Spring Servlet 映射困惑

java - 对 android 编程,当我构建项目时,我的布局 xml 文件不会更新

java - Server-Sent-Events 如何工作