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

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

相关推荐
AAA修煤气灶刘哥1 天前
别让Redis「歪脖子」!一次搞定数据倾斜与请求倾斜的捉妖记
redis·分布式·后端
往事随风去2 天前
架构师必备思维:从“任务队列”到“事件广播”,彻底吃透消息队列两大设计模式
消息队列·rabbitmq
Aomnitrix2 天前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
程序消消乐2 天前
Kafka 入门指南:从 0 到 1 构建你的 Kafka 知识基础入门体系
分布式·kafka
智能化咨询2 天前
Kafka架构:构建高吞吐量分布式消息系统的艺术——进阶优化与行业实践
分布式·架构·kafka
Chasing__Dreams2 天前
kafka--基础知识点--5.2--最多一次、至少一次、精确一次
分布式·kafka
在未来等你2 天前
Elasticsearch面试精讲 Day 17:查询性能调优实践
大数据·分布式·elasticsearch·搜索引擎·面试
大数据CLUB2 天前
基于spark的澳洲光伏发电站选址预测
大数据·hadoop·分布式·数据分析·spark·数据开发
ajax_beijing2 天前
zookeeper是啥
分布式·zookeeper·云原生