大菜菜学习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其实真的很像,但是在使用的过程中更加灵活

 

posted @ 2024-04-09 14:26  AK梦  阅读(22)  评论(0)    收藏  举报