RabbitMQ在Debian上的消息路由机制基于**交换机(Exchange)和绑定(Binding)**实现,核心是通过路由键(Routing Key)匹配规则将消息分发到目标队列,支持多种路由模式,具体如下:
| 类型 | 匹配规则 | 适用场景 |
|---|---|---|
| Direct | 路由键与绑定键完全精确匹配,如key1→key1绑定的队列。 |
点对点消息,如订单状态更新。 |
| Fanout | 忽略路由键,广播到所有绑定的队列。 | 群发消息,如系统公告。 |
| Topic | 路由键与绑定键通配符匹配(*匹配1个单词,#匹配0个或多个单词)。 |
主题订阅,如日志分类(error.*)。 |
| Headers | 基于消息头(Headers)的键值对匹配(支持x-match: all/any逻辑)。 |
复杂条件路由,如消息优先级过滤。 |
安装与配置
sudo apt update
sudo apt install erlang rabbitmq-server
sudo systemctl enable --now rabbitmq-server
sudo rabbitmq-plugins enable rabbitmq_management
路由规则配置示例
# 声明交换机和队列
rabbitmqadmin declare exchange name=direct_exchange type=direct
rabbitmqadmin declare queue name=queue1
# 绑定并指定路由键
rabbitmqadmin declare binding source=direct_exchange destination=queue1 routing_key=order.created
rabbitmqadmin declare exchange name=topic_exchange type=topic
rabbitmqadmin declare queue name=log_queue
# 绑定路由键(匹配所有以"log."开头的消息)
rabbitmqadmin declare binding source=topic_exchange destination=log_queue routing_key=log.*
消息验证
http://localhost:15672)查看队列消息,或使用命令行工具rabbitmqctl监控队列状态。rabbitmq_delayed_message_exchange)实现延迟队列等高级功能。参考来源: