【rabbitMQ】Exchanges交换机

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

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

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

目录

[Fanout 交换机](#Fanout 交换机)

[1. add queue](#1. add queue)

[2. add Exchange](#2. add Exchange)

3.绑定队列

[Direct 交换机](#Direct 交换机)

[1. add queue](#1. add queue)

[2. add Exchange](#2. add Exchange)

[3.绑定队列,并设置Routing key](#3.绑定队列,并设置Routing key)

[Topic 交换机](#Topic 交换机)

[1.add queue](#1.add queue)

[2.add Exchange](#2.add Exchange)

3.绑定队列


Fanout 交换机

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

1. add queue

2. add Exchange

3.绑定队列

消费者监听队列

java 复制代码
 @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+"】");
    }
  

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

java 复制代码
 @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

消费者监听队列

java 复制代码
 @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+"】");
    }

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

java 复制代码
 @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.绑定队列

消费者监听队列

java 复制代码
 @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+"】");
    }

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

java 复制代码
    @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 "

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

相关推荐
快乐肚皮28 分钟前
Redisson学习专栏(二):核心功能深入学习(分布式锁,分布式集合,原子操作与计数器,事件与监听)
java·分布式·分布式锁·redisson·事件·分布式集合·原子
栗子~~2 小时前
kafka 常用知识点
分布式·kafka
bigdata-rookie2 小时前
kafka SASL/PLAIN 认证及 ACL 权限控制
大数据·运维·服务器·分布式·zookeeper·kafka
prince052 小时前
Kafka多线程Consumer
分布式·kafka
炼金士2 小时前
基于分布式状态机的集装箱智能道口软件架构方法
分布式·orleans·dapr·actor
茶本无香2 小时前
Greenplum:PB级数据分析的分布式引擎,揭开MPP架构的终极武器
分布式·架构·数据分析
灰阳阳3 小时前
RabbitMQ集群与负载均衡实战指南
分布式·rabbitmq·负载均衡
厚衣服_34 小时前
第十二篇:MySQL 分布式架构演进与云原生数据库探索
分布式·云原生·架构
代码的余温4 小时前
Marshalling与Demarshalling深度解析
java·分布式·跨进程通信
灰小猿5 小时前
分布式项目保证消息幂等性的常见策略
java·redis·分布式·高并发·springcloud