猿问

为什么发布到 fanout exchange 也发布到 direct exchange?

我正在尝试获取 RabbitMQ 设置,我可以在其中选择将消息作为扇出或直接发布到服务。但是,当我发布到扇出交换时,我看到消息已传送到所有服务,而且还以循环方式传送。因此,其中一项服务总是两次看到相同的消息。

在两个单独的控制台窗口中运行上述代码。如果你P在一个窗口中按下,你会看到一个实例输出了我所期望的:


Received message (fanout)

但是另一个窗口输出这个:


Received message (fanout)

Received message (direct)

尽管PublishBasic调用指定了扇出交换名称,但还是如此。这里发生了什么?我如何确保在这种情况下不涉及直接交换?


翻阅古今
浏览 132回答 1
1回答

潇潇雨雨

我无法使用 RabbitMQ 3.7.14 和您的代码进行重现。我只在每个终端窗口中收到“已收到消息(扇出)”消息。也许 RabbitMQ 中有旧绑定?您应该重置您的实例并重试。注意: RabbitMQ 团队会监控rabbitmq-users 邮件列表,有时只会在 StackOverflow 上回答问题。
随时随地看视频慕课网APP
我要回答