SpringAMQP 发布订阅-DirectExchange

news2025/1/19 16:36:35

DirectExchange:

路由模式模型

代码实现

        直接通过注解方式绑定交换机和队列,这里边加了key也就是BingdingKey绑定key,可以看作交换机的路由规则,交换机收到消息后读取消息中指定的Routingkey发送到存有相应BingdingKey的队列中。

@RabbitListener(
            bindings = @QueueBinding(
                    value = @Queue(name = "direct.queue1"),
                    exchange = @Exchange(name = "itcast.direct",type = ExchangeTypes.DIRECT),
                    key = {"red","blue"}
            )
    )
    public void listenDirectQueue1(String msg){
        System.out.println("从queue1中获取到了消息:"+msg);
    }

    @RabbitListener(
            bindings = @QueueBinding(
                    value = @Queue(name = "direct.queue2"),
                    exchange = @Exchange(name = "itcast.direct",type = ExchangeTypes.DIRECT),
                    key = {"red","yellow"}
            )
    )
    public void listenDirectQueue2(String msg){
        System.out.println("从queue2中获取到了消息:"+msg);
    }

然后编写publisher消费者的代码:

@Test
    public void testDirectExchangeSend() {
        //发送消息
        String DirectChangeName = "itcast.direct";//交换机的名字
        String msg = "我是direct交换机发送的消息";
        for (int i = 0; i < 10; i++) {
            rabbitTemplate.convertAndSend(DirectChangeName, "red", msg+i);
        }
        for (int i = 0; i < 10; i++) {
            rabbitTemplate.convertAndSend(DirectChangeName, "yellow", msg+i);

        }
    }

两个队列的BingingKey中都有red 所以两个都接收到了

当RoutingKey是yellow时候只有一个接收到了 因为只有那一个交换机里BingingKey里有yellow

能看到控制台接收并打印的消息

也可以看到队列

总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Power BI】DAX语言 VS Power Query M语言

DAX&#xff08;Data Analysis Expressions&#xff09;和Power Query M语言是Microsoft Power BI和Excel中的两种强大的数据处理和分析工具。尽管它们在许多方面都有重叠之处&#xff0c;特别是用于数据建模和数据转换&#xff0c;但它们在用途、语法和功能上有显著的区别。本…

联想移动硬盘数据不见了?别急,分享4种实用恢复方法

在数字化时代&#xff0c;硬盘作为数据存储的核心设备&#xff0c;承载着大量的重要信息和文件。然而&#xff0c;有时我们可能会遭遇硬盘数据丢失的困境&#xff0c;特别是当这个问题发生在联想硬盘上时&#xff0c;更是让人倍感焦虑。本文将深入探讨联想硬盘数据丢失的可能原…

【热门话题】Vue.js:现代前端开发的轻量级框架之旅

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Vue.js&#xff1a;现代前端开发的轻量级框架之旅一、Vue.js概览1.1 Vue.js的诞…

如何完美实现文件外发防泄漏,保护核心数据资产?

不管是大型企业&#xff0c;还是小型创业公司&#xff0c;不论企业规模大小&#xff0c;每天都会有大量的文件要进行内部传输协作和对外发送使用&#xff0c;数据的生产也是企业业务生产力的体现之一。因此文件外发防泄漏是企业信息安全中的一个重要议题&#xff0c;为了防止企…

关于‘==’与equals的区别

我写的也不清楚&#xff0c;有兴趣的可以看这位大佬的文章链接&#xff0c;说的很清楚 https://www.cnblogs.com/Latiny/p/8099581.html#!comments 与 equals 方法 判断两个变量是否相等有两种方式&#xff1a;一种是利用 运算符&#xff0c;另一种是利用equals方法。 注意…

YOLOv9全网最新改进系列::YOLOv9完美融合双卷积核(DualConv)来构建轻量级深度神经网络,目标检测模型有效涨点神器!!!

YOLOv9全网最新改进系列&#xff1a;&#xff1a;YOLOv9完美融合双卷积核&#xff08;DualConv&#xff09;来构建轻量级深度神经网络,目标检测模型有效涨点神器&#xff01;&#xff01;&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er …

Flutter 依据JSON数据自动生成实体类

json自动化生成工具 点击这里可以跳转 页面是这样的 然后在左边输入你的json数据&#xff0c;它会自动生成对应的实体类 生成的实体类是如下&#xff1a; import package:json_annotation/json_annotation.dart; part merch_region.g.dart;JsonSerializable()class MerchReg…

Java面试八股之反射慢在哪里

Java反射慢在哪里 动态类型检查&#xff1a; 在反射过程中&#xff0c;Java需要在运行时确定类、方法、字段等的类型信息。这与编译时已经确定类型信息的常规对象访问不同&#xff0c;反射需要额外的类型查询和验证&#xff0c;增加了性能开销。 安全检查&#xff1a; 反射…

【流体模拟-01】如何模拟静态流(上)

文章目录 一、说明二、摘要三、简介四、稳定的纳维-斯托克斯4.1 基本方程4.2 解决方法 一、说明 关于流体物质的仿真和模拟&#xff0c;需要流体理论方面的一般知识。我们这里从基本流体方程入手&#xff0c;详细解释如何实现流体仿真的每一个具体步骤。 二、摘要 构建类似流体…

应急救灾北斗终端手机应用方案

在应对自然灾害和紧急救援的严峻挑战中&#xff0c;技术的力量从未如此重要。为了保障救援人员能够迅速、准确地响应灾情&#xff0c;提供及时有效的救助&#xff0c;顶坚应急救灾北斗终端手机应用应运而生。这款应用依托北斗卫星导航系统的高精度定位与通信功能&#xff0c;不…

企业OA办公系统开发笔记:2、MyBatis-Plus

文章目录 企业办公系统&#xff1a;2、MyBatis-Plus一、MyBatis-Plus1、简介2、主要特点3、依赖 二、MyBatis-Plus入门1、配置文件2、启动类3、实体类4、添加Mapper类5、测试Mapper接口6、CRUD测试6.1、insert添加6.1.1、示例6.1.2、主键策略 6.2、更新6.3、删除6.3.1、根据id删…

LoRA Land: 310个经微调的大语言模型可媲美GPT-4

摘要 低秩自适应 (LoRA) 已成为大语言模型 (LLM) 参数有效微调 (PEFT) 中最广泛采用的方法之一。LoRA 减少了可训练参数的数量和内存使用,同时达到了与全面微调相当的性能。该研究旨在评估在实际应用中训练和服务使用 LoRA 微调的 LLM 的可行性。首先,该研究测量了在 10 个基础…

学校为何更热衷于使用SOLIDWORKS教育版教学

在当今的教育环境中&#xff0c;SOLIDWORKS教育版因其独特的优势&#xff0c;越来越受到学校的青睐。为什么学校更热衷于使用SolidWorks教育版进行教学呢&#xff1f;本文将从以下几个方面进行阐述。 首先&#xff0c;SOLIDWORKS教育版为学生们提供了一个与实际工程应用紧密结…

java学习之zip炸弹攻击

一、概述 Zip炸弹是一种特殊类型的Zip文件&#xff0c;它包含了大量的无用数据。Zip文件格式允许使用压缩算法来减小文件的大小&#xff0c;但是如果Zip文件中的某些内容被重复压缩&#xff0c;就会导致文件大小急剧增加。Zip炸弹利用这个特性&#xff0c;将一些无用的数据多次…

vscode调试Electron+ts

调试Electronjs 调试Electronjs: https://www.electronjs.org/zh/docs/latest/tutorial/debugging-vscode 调试Electronts 首先看一下&#xff0c;我的目录结构。目录结构决定了launch.json中的路径部分。我将在项目根目录下进行调试&#xff0c;项目根目录下包含electron代码…

Windows Qt中支持heic 图片显示

安装vcpkg&#xff1a; git clone https://github.com/microsoft/vcpkg 执行脚本&#xff1a; .\vcpkg\bootstrap-vcpkg.bat 在安装之前如果需要指定vs的编译器&#xff0c; 在如下文件中做更改&#xff0c; 我指定的是用vs2019编译的&#xff1a; D:\vcpkg\vcpkg\triplets 增…

腐烂的橘子 - (LeetCode)

一、概述 994. 腐烂的橘子 - 力扣&#xff08;LeetCode&#xff09;&#xff0c;今天刷到这道题&#xff0c;开始按照自己实现的思路写了一次&#xff0c;通过了调试&#xff0c;但是提交的时候&#xff0c;来了一个大的数据&#xff0c;就没有通过测试&#xff0c;百思不得其…

Redis-持久化操作-RDB

Redis持久化 由于Redis的数据都存放在内存中&#xff0c;如果没有配置持久化&#xff0c;Redis重启后数据就全丢失了&#xff0c;于是需要开启 Redis的持久化功能&#xff0c;将数据保存到磁盘上&#xff0c;当Redis重启后&#xff0c;可以从磁盘中恢复数据。 Redis提供了两个…

内联函数+auto关键字(C++11)+指针空指针nullptr(C++11)

内联函数auto关键字&#xff08;C11&#xff09;指针空指针nullptr&#xff08;C11&#xff09;详解 内联函数概念特性 auto关键字&#xff08;C11&#xff09;auto简介auto的使用细则auto不能推导的场景 基于范围的for循环(C11)范围for的语法范围for的使用条件 指针空指针null…

2024年 C++音视频开发学习路线(ffmpeg/rtsp/srs/webrtc/hls)

在音视频工作领域&#xff0c;很多人可能会陷入徘徊和迷茫的境地。音视频的知识纷繁复杂&#xff0c;自己学习非常困难&#xff0c;既需要非常扎实的基础知识&#xff0c;又需要有很多的工程经验&#xff1b;不知道如何学&#xff0c;怎样才能查漏补缺自己的技术短板。 对于音…