接收消息,並根據routing key 轉發消息所綁定的隊列java
exchange屬性服務器
amqp.default routingKey爲queue name性能
The default exchange is implicitly bound to every queue, with a routing key equal to the queue name. It is not possible to explicitly bind to, or unbind from the default exchange. It also cannot be deleted.ui
全部發送到direct exchange的message 由routingkey轉發到指定 queue編碼
注意: Direct模式能夠使用Rabbitmq自帶的exchange:default exchange。因此不須要將exchange進行任何綁定操做,消息傳遞時,routingkey 必須徹底匹配纔會被隊列接收,不然該消息被拋棄。spa
routing key 不必定等於 queue name3d
全部發送到topic exchange的消息由routekey轉發到指定topic的queuecode
exchange將eouteKey和某topic進行模糊匹配,此時隊列須要綁定一個topic。cdn
模糊匹配
:blog
'#' 匹配多個單詞 '*' 匹配一個單詞
不處理任何routing key. 只須要將隊列綁定到交換機上,無論rk。
轉發最快,性能最好。
exchange和exchange、queue之間的鏈接關係
binding中包含routing key 和其餘參數
存儲消息數據
持久化
自動刪除
服務器和應用程序之間傳送的數據
本質上是一段數據:Properties、Payload(Body)組成
經常使用屬性:delivery mode 、headers 自定義屬性 其餘屬性:content_type、content_encoding priority 其餘屬性:correlation_id reply_to expiration message_id
Delivery Mode 2: 持久化投遞 1:非持久化投遞
Map<String, Object> headers = new HashMap<>();
headers.put("my1", "111");
headers.put("my2", "222");
AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
.deliveryMode(2) //持久化
.contentEncoding("UTF-8") //編碼方式
.expiration("10000") //發送後10s自動清除
.headers(headers)
.build();
複製代碼
虛擬主機 用於進行邏輯隔離 最上層的消息路由
一個virtual host裏面能夠有若干個exchange queue
但不能用同名的exchange queue