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

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

相关推荐
jessecyj5 分钟前
【RabbitMQ】超详细Windows系统下RabbitMQ的安装配置
windows·分布式·rabbitmq
阿维的博客日记4 小时前
分布式事务代码
分布式
_waylau20 小时前
鸿蒙架构师修炼之道-面向对象的分布式架构
分布式·华为·架构·架构师·harmonyos·鸿蒙
Francek Chen1 天前
【大数据存储与管理】NoSQL数据库:03 NoSQL与关系数据库的比较
大数据·数据库·分布式·nosql
FeBaby1 天前
Java 高并发场景下 Redis 分布式锁(UUID+Lua)最佳实践
java·redis·分布式
richard_yuu1 天前
工控场景落地|分布式协调与动态重配置管理,如何实现产线不停机升级?
分布式
MoFe11 天前
【.net core】【RabbitMq】rabbitmq在.net core中的简单使用
分布式·rabbitmq·.netcore
何中应1 天前
在windows本地部署RabbitMQ
分布式·消息队列·rabbitmq
Wild API1 天前
按任务轻重做模型分流的实战思路
分布式·微服务·架构
低客的黑调1 天前
RabbitMQ-从入门到生产落地
分布式·rabbitmq