大菜菜学习RabbitMQ——第七篇
这一篇文章我们讲的是另一个转换机topic转换机
topic:话题
相对于其他交换机来说这个交换机有很强的灵活性
首先我们需要创建两个queue,名字的话这样就可以

然后创建对应的交换机

在这里交换机的类型应该要选择为topic
然后我们就可以开始binding了

这里我们看到有个符号我们一直都没有看到过,那就是‘#’,这个表示的是在后面存在0个或多个单词
然后我们先写两个消费者,这个就不多赘述了
@RabbitListener(queues = "topic.queue1") public void listenTopicQueue1(String msg) throws InterruptedException { System.out.println("消费者1收到了topic.queue1的消息:【" + msg + "】"); } @RabbitListener(queues = "topic.queue2") public void listenTopicQueue2(String msg) throws InterruptedException { System.out.println("消费者2收到了topic.queue2的消息:【" + msg + "】"); }
然后我们写个单元测试
@Test void testSendTopic() { String exchangeName = "hmall.topic"; String msg = "消息"; rabbitTemplate.convertAndSend(exchangeName , "Japan.news" , msg); }
在这里,我们看到我们routingKey写的是Japan.news,所以topic.queue2会出现监听

然后我们写个routingKey为china.news

很显然在这里两个队列都接收到了消息
最后写一个china.people

所以我们发现topic和direct其实真的很像,但是在使用的过程中更加灵活


浙公网安备 33010602011771号