这种交换机和其他交换机不一样,他是更加灵活的交换机。比广播交换机 直连交换机更厉害、
他有2中通配符
我现在举个例子
queue1 绑定的队列 ---------------------------------china.#
queue2 绑定的队列 ---------------------------------japan.#
queue3 绑定的队列 --------------------------------- #.weather
queue4 绑定的队列 --------------------------------- #.news
这时候只要你发送消息的时候队列写的是 china.news china.1.news china.hellow.news 都会跑到队列1 只要你是以china为前缀
这时候只要你发送消息的时候队列写的是 asdas.news chin.news china.hellow.news 都会跑到队列4 只要你是以china为前缀
如果你写的是#.#就是所有,任务消息都可以收到
符号“#”表示通配符可以匹配0个或者多个单词。例如,“china.#”可以匹配所有的以“china”为前缀的主题,例如“china.beijing”,“china.shanghai.weather”等等。
符号“ * ”表示通配符:可以匹配一个单词。例如,“china.*”可以匹配所有的以“china”为前缀并且后面只有一个单词的主题,例如“china.beijing”,“china.shanghai”,但是“china.shanghai.weather”不会被匹配。
首先先创建2个队列 topic.queue1 topic.queue2
创建交换机
然后进行绑定
用java代码实现如何发送
创建一个MqTopicTest
创建一个SpringAmqpTopicTest并发送消息
我截图一下绑定的关系
消息者1会拿到消息
测试 1 如果我队列1绑定的是#.china.#
我在此测试
是这样的
测试 2 如果我队列1绑定的是#.china.*
ok可以收到
收不到
意思就是#.可以以china为后缀,但是有(.*)这有表示后面可以跟1个单词
测试 3 想用2个队列都收到
可以路由key 写 dasdas.china.new
ok都可以收到