【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 "

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

相关推荐
hzp66610 分钟前
spark动态分区参数spark.sql.sources.partitionOverwriteMode
大数据·hive·分布式·spark·etl·partitionover
幼儿园老大*7 小时前
什么是分布式数据库?有什么优势?
数据库·分布式
武子康8 小时前
大数据-135 ClickHouse 集群连通性自检 + 数据类型避坑实战|10 分钟跑通 ON CLUSTER
大数据·分布式·后端
有谁看见我的剑了?11 小时前
Rocky 9 安装 Elasticsearch分布式集群
分布式·elasticsearch·jenkins
你总是一副不开心的样子(´ . .̫ .20 小时前
消息队列Kafka
分布式·kafka
沐浴露z20 小时前
Kafka入门:基础架构讲解,安装与使用
java·分布式·kafka
骑士99911121 小时前
rabbitMQ 的安装和使用
linux·rabbitmq
鼠鼠我捏,要死了捏1 天前
Kafka消息可靠性方案对比与实践
kafka·rabbitmq·消息可靠性
wu~9701 天前
Kafka底层解析:可靠性与高性能原理
分布式·kafka·操作系统
兜兜风d'1 天前
RabbitMQ 发送方确认机制详解
spring boot·分布式·rabbitmq·java-rabbitmq·1024程序员节