Topic 类型与 Direct 相比,都是可以根据 RoutingKey 把消息路由到不同的队列。只不过 Topic 类型Exchange 可以让队列在绑定 Routing key 的时候使用通配符!
Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割,例如: item.insert
通配符规则:# 匹配一个或多个词,* 匹配不多不少恰好1个词,例如:item.# 能够匹配 item.insert.abc 或者 item.insert,item.* 只能匹配 item.insert。
对MQ 的topic的深刻理解:
Topics的通配符可以用到哪些场景?
例如新闻应用中的地域分类, 当你的定位不同会推送不同地域的消息,像头条,在西安会推送西安的新闻、天气.....
到了北京就会推送北京的新闻、天气
如果用队列红实现这个需求,你有什么好办法吗?
支持通配的topic 类型 exchanger就可以闪亮登场。
1. 有四笔消息:北京的新闻A、西安的新闻B、北京的天气C、西安的天气D
2. QUEUE1 Routing key 定义为beijing.# ,那么北京的新闻A、北京的天气C会被匹配到
3. QUEUE2 Routing key 定义为#.新闻, 那么北京的新闻A、西安的新闻B会被匹配到
4. QUEUE2 Routing key 定义为#.天气, 那么北京的天气C、西安的天气D会被匹配到
....
随着消息类别的细分,可以定义不同的routing key可以满足需求