请列举 RabbitMQ 的主要交换机类型,并结合你的实际项目经历,说明当时选用的是哪一种以及选型理由。
考察说明
考查对 RabbitMQ 交换机类型及其适用场景的理解,以及在实际项目中的选型和权衡能力。
回答思路
- 【回答框架 1】RabbitMQ 提供四种交换机:直连交换机(direct)按路由键精确匹配队列;主题交换机(topic)用通配符匹配路由键模式;扇出交换机(fanout)将消息广播到所有绑定的队列;头交换机(headers)根据消息头属性匹配。
- 【回答框架 2】direct 适用于点对点、按业务类型定向投递;topic 适用于按主题分类、支持通配符的灵活路由;fanout 适合广播通知;headers 因为匹配开销大,很少使用。
- 【回答框架 3】我的项目中选择了 direct 交换机,将不同业务事件绑定到独立队列,路由键与队列一一对应,实现简单且便于管理。对于需要广播的场景,另配 fanout 交换机。
- 【回答框架 4】选型依据:direct 能满足精准路由,且绑定关系简单,排查问题直观;如果业务有复杂路由需求,会考虑 topic;若追求广播则直接用 fanout。
- 【关键点 1】四种交换机:direct、topic、fanout、headers。
- 【关键点 2】direct 精确匹配路由键,topic 支持通配符,fanout 广播,headers 基于消息头。
- 【关键点 3】选型依据:业务路由需求、队列绑定关系、消息量级和运维成本。
- 【易错点 1】不要混淆 direct 与 topic,topic 使用点号和星号通配,direct 是精确匹配。
- 【易错点 2】headers 交换机性能较差,实际中极少使用。
- 【易错点 3】交换机只是路由消息,不存储消息,确认机制在于队列和消费者。