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