【rabbitMQ】Exchanges交换机

2023-12-15 04:53:11

上一篇:springboot整合rabbitMQ模拟简单收发消息

https://blog.csdn.net/m0_67930426/article/details/134904766

本篇代码基于上一篇继续写

目录

Fanout 交换机

1. add?queue

2. add Exchange

3.绑定队列

Direct 交换机

1. add queue

?2. add Exchange

3.绑定队列,并设置Routing key?

Topic 交换机

1.add queue

2.add Exchange

3.绑定队列


Fanout 交换机

fanout exchange 会将接收到的消息广播到每一个跟其绑定的queue

1. add?queue

2. add Exchange

3.绑定队列

?

?消费者监听队列

 @RabbitListener(queues = "fanout.queue1")
    public void eee(String msg){
        System.out.println("消费者e收到了fanout.queue1的消息:【"+msg+"】");
    }

    @RabbitListener(queues = "fanout.queue2")
    public void fff(String msg){
        System.err.println("消费者f收到了fanout.queue2的消息:【"+msg+"】");
    }
  

?

?单元测试模拟业务发送消息

 @Test
    void Test3Send(){
        String ExchangeName = "aaa.fanout";
        String msg = "rabbitMQ<消息队列>";
        rabbitTemplate.convertAndSend(ExchangeName,null, msg);
    }

?

Direct 交换机

Direct Exchange 会将接收的消息根据规则路由到指定的queue

1. add queue

?2. add Exchange

?

3.绑定队列,并设置Routing key?

?

??消费者监听队列

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

    @RabbitListener(queues = "direct.queue2")
    public void hhh(String msg){
        System.err.println("消费者h收到了fanout.queue2的消息:【"+msg+"】");
    }

?单元测试模拟业务发送消息

 @Test
    void Test3Send() {
        String ExchangeName = "bbb.direct";
        String msg = "rabbitMQ<消息队列>";
        rabbitTemplate.convertAndSend(ExchangeName,"red" , msg);
    }

Routing key:? " red "

预期结果是,两个消费者都收到了消息

?

将Routing key 的值改为blue?

?

预期结果,只有消费者g接收到了消息

?

Topic 交换机

1.add queue

2.add Exchange

3.绑定队列

?

?

消费者监听队列?

 @RabbitListener(queues = "topic.queue1")
    public void jjj(String msg){
        System.out.println("消费者j收到了fanout.queue1的消息:【"+msg+"】");
    }

    @RabbitListener(queues = "topic.queue2")
    public void kkk(String msg){
        System.err.println("消费者k收到了fanout.queue2的消息:【"+msg+"】");
    }

?单元测试模拟业务发送消息


    @Test
    void Test3Send() {
        String ExchangeName = "ccc.topic";
        String msg = "rabbitMQ";
        rabbitTemplate.convertAndSend(ExchangeName,"zhejiang.new" , msg);
    }

Routing key : " zhejiang.new "?

预期结果是k收到消息

?

Routing? key: " china.new "

预期结果,两个消费者都接收到了消息

?

文章来源:https://blog.csdn.net/m0_67930426/article/details/134918699
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。