RabbitMQ 路由行为
RabbitMQ routing behavior
我正在尝试通过 RabbitMQ 将消息发布到 2 个不同的 queueus,但事情并不像我预期的那样,这里是详细信息:
我有一个交换器: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 都收到了正文,我的代码或服务器配置有什么问题吗?
无论使用路由键还是绑定,扇出交换器总是会向每个绑定队列传递消息。在扇出交换中完全忽略路由键。
根据您的需求描述,您要查找的不是扇出交换。
如果你想根据使用的路由键将消息传递到特定队列,你需要使用直接交换(用于路由键的简单匹配)或主题交换(用于复杂的模式匹配)路由键)
我正在尝试通过 RabbitMQ 将消息发布到 2 个不同的 queueus,但事情并不像我预期的那样,这里是详细信息:
我有一个交换器: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 都收到了正文,我的代码或服务器配置有什么问题吗?
无论使用路由键还是绑定,扇出交换器总是会向每个绑定队列传递消息。在扇出交换中完全忽略路由键。
根据您的需求描述,您要查找的不是扇出交换。
如果你想根据使用的路由键将消息传递到特定队列,你需要使用直接交换(用于路由键的简单匹配)或主题交换(用于复杂的模式匹配)路由键)