【rabbitMQ】Exchanges交换机

上一篇: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 "

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

 

相关推荐

  1. -交换机-

    2023-12-11 23:52:03       65 阅读
  2. RabbitMQ交换机

    2023-12-11 23:52:03       51 阅读
  3. RabbitMQ交换机

    2023-12-11 23:52:03       30 阅读
  4. 【华为交换交换机MSTP+VRRP配置

    2023-12-11 23:52:03       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 23:52:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 23:52:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 23:52:03       82 阅读
  4. Python语言-面向对象

    2023-12-11 23:52:03       91 阅读

热门阅读

  1. Git命令---查看远程仓库

    2023-12-11 23:52:03       57 阅读
  2. Golang AI框架:探索人工智能与Go语言的结合

    2023-12-11 23:52:03       66 阅读
  3. 使用IDA调试工具辅助排查C++软件异常问题

    2023-12-11 23:52:03       56 阅读
  4. SAP UI5 walkthrough step8 Translatable Texts

    2023-12-11 23:52:03       51 阅读
  5. C盘瘦身,C盘清理

    2023-12-11 23:52:03       59 阅读
  6. 小功能实现(二十)分类统计,Map取值自增

    2023-12-11 23:52:03       46 阅读
  7. 704. 二分查找

    2023-12-11 23:52:03       51 阅读
  8. Mybatis增删改查基础

    2023-12-11 23:52:03       48 阅读