我试图通过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都收到了正文,我的代码或服务器配置有什么问题吗?
答案 0 :(得分:0)
扇出交换将始终向每个绑定队列传递消息,无论使用路由密钥还是绑定。在扇出交换中完全忽略路由键。
根据您的需求描述,您所寻找的不是粉丝交换。
如果要根据使用的路由密钥将消息传递到特定队列,则需要使用直接交换(用于路由密钥的简单匹配)或主题交换(用于路由密钥的复杂,模式匹配) )