direct:这种类型的交换机的路由规则是根据一个routingKey的标识,交换机通过一个 routingKey与队列绑定,在生产者产生消息的时候指定一个routingKey,当绑定的队列的routingKey与生产者发送的一样,那么交换机会把这个消息发送给对应的队列。

fanout:这种类型的交换机路由规则很简单,只要与它绑定了的队列,它就会把消息发送给对应队列。(与routingKey没有关系)

topic:这种类型的交换机路由规则与routingKey有关系,只不过topic可以根据 *,# (*号代表过滤一单词,#代表过滤后面的所有单词,用 点号隔开)来识别routingKey。如:生产者绑定的队列有 A 和 B 队列,A的routingKey是 *.user,B的routingKey是 #.user。生产者生产一条消息的routingKey是 error.user,那么 A 和 B 队列都能收到,如果生产一条消息的routingKey是 topic.error.user,那么只有 B 队列能收到。

headers:这个类型的交换机很少用到,上面三个交换机基本上能应付所有场景了,它的路由规则与routingKey无关,而是通过判断header参数来判断。
本文详细介绍了四种常见的消息交换机类型:direct依赖routingKey匹配,fanout广播消息,topic通过通配符过滤,headers则依据header参数。理解这些规则有助于高效使用消息队列系统。
7677

被折叠的 条评论
为什么被折叠?



