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
)實現延遲隊列等高級功能。參考來源: