RabbitMQ路由行为

时间:2016-08-12 00:53:54

标签: c# rabbitmq rabbitmq-exchange

我试图通过RabbitMQ将消息发布到2个不同的队列,但事情并不像我预期的那样,这里是细节:

我有一个交换:amq.fanout,输入:fanout,绑定是队列:Q1,路由键:key1和队列:Q2,路由键:key2。

在我的客户端,我有这段代码

var model = connection.CreateModel(); model.ExchangeDeclare("amq.fanout", "fanout", true); model.BasicPublish("amq.fanout", "key1", null, body);

我假设将主体发布到Q1,因为它有key1作为路由键,但Q1和Q2都收到了正文,我的代码或服务器配置有什么问题吗?

1 个答案:

答案 0 :(得分:0)

扇出交换将始终向每个绑定队列传递消息,无论使用路由密钥还是绑定。在扇出交换中完全忽略路由键。

根据您的需求描述,您所寻找的不是粉丝交换。

如果要根据使用的路由密钥将消息传递到特定队列,则需要使用直接交换(用于路由密钥的简单匹配)或主题交换(用于路由密钥的复杂,模式匹配) )