1. RabbitMQ 核心模型中 Exchange/Queue/Binding 的路由语义(direct/topic/fanout/headers)
请说明 RabbitMQ 的 Exchange/Queue/Binding 核心模型,以及 direct/topic/fanout/headers 四种交换机的路由语义?
- Exchange/Queue/Binding 概念
- direct 直连路由
- topic 主题路由
RabbitMQ 中,Producer 不直接发送消息到 Queue,而是发到 Exchange(交换机),Exchange 根据 Binding(绑定)关系与消息的 routing key 决定消息路由到哪些 Queue。四种交换机类型:direct(直连)按 routing key 精确匹配(Queue 的 binding key 与消息的 routing key 完全一致才收);topic(主题)按 routing key 的模式匹配(支持通配符 * 匹配一个词、# 匹配零或多个词),适合多级路由;fanout(扇出)把消息广播到所有绑定它的 Queue,忽略 routing key;headers(头)按消息的属性(headers)匹配,不按 routing key。运维上需根据路由需求选择交换机类型,并注意 binding 与 routing key 的规划。
交换机的路由语义是 RabbitMQ 的核心。direct 精确、topic 模式化、fanout 广播、headers 按属性。模型是"发到交换机 → 按绑定路由 → 存到队列 → 消费者消费"。理解这四种类型决定如何设计消息路由拓扑。
# 声明 topic 交换机与绑定(通过 rabbitmqadmin 或管理界面)
rabbitmqadmin declare exchange name=topic_ex type=topic
rabbitmqadmin declare queue name=orders_queue
rabbitmqadmin declare binding source=topic_ex queue=orders_queue routing_key="orders.*"