大菜菜学习RabbitMQ——第六篇

这一篇还是讲交换机,direct交换机

direct:定向

这个交换机其实是在binding的时候有一个对应的bindingKey,所以可以做到定向发送的意思,类似于私聊,但是如果bindingKey相同,其实等同于是fanout交换机,所以总的来说,direct这个交换机功能比fanout交换机更加强大,适用于更加复杂业务

一开始,我们同样需要创建几个队列

然后我们需要建立一个新的交换机

在这里,我们需要将这个转换机滴类型选择为direct类型

 

然后我们需要bind,但是最重要事情是,我们需要在这里加上routingKey

 

然后我们写上direct.queue2

 然后我们书写消费者,监听对应的消息

@RabbitListener(queues = "direct.queue1")
    public void listenDirectQueue1(String msg) throws InterruptedException {
        System.out.println("消费者1收到了direct.queue1的消息:【" + msg + "】");
    }

    @RabbitListener(queues = "direct.queue2")
    public void listenDirectQueue2(String msg) throws InterruptedException {
        System.out.println("消费者2收到了direct.queue2的消息:【" + msg + "】");
    }

然后我们写对应方法表示发出信息

@Test
    void testSendDirect() {
        String exchangeName = "hmall.direct";
        String msg = "红色";
        rabbitTemplate.convertAndSend(exchangeName , "red" , msg);
    }

这里我们可以发现,在这里因为routingKey = "red",这两个队列里面都有对应的参数,所有两个队列都可以收到消息

然后我们让routingKey变成blue

 然后同理可知

 所以根据这些例子应当可以知道这个的功能是什么

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