topic exchange:能夠route message 基於多個標準(相互獨立的多重意義/標準),每個標準以dot分隔,匹配是合併式,全部滿足纔算匹配成功。
比如message發佈時的routingkey是quick.orange.rabbit (注意中間的dot),bindingkey是*.orange.rabbit 或者*.orange.*或者*.*.rabbit等等都是算匹配成功的
爲方便匹配,topic exchange bindingkey支持兩個特殊字符:
* start:代表任一一個單詞
# hash代表任0個或者多個單詞
例子:
比如message的routingkey的格式是速度.顏色.動物名稱三個合併要匹配的routingkey,message發送以lazy.orange.rabbit爲routingkey,則bindingkey爲*.orange.rabbit 匹配。
topic exchange可以轉換成fanout exchange和direct exchange:
1. 把topic exchange的bindingkey設爲hash#字符(0個或者多個字符都匹配成功)時,等同於fanout exchange。
2. 如果bindingkey裏面不出現上面兩個特殊字符*和#,則等同於direct exchange