springboot rabbitmq 发布订阅 广播模式

根据amqp协议、rabbitmq入门、springboot集成rabbitmq 可知,rabbitmq的广播模式关键是使用fanout类型的exchange,fanout exchange会忽略message中的routing-key、queue中的binding-key,发给绑定exchange的全部queue。

创建fanout类型的exchange

import org.springframework.amqp.core.*;
@Configuration
public class MqConfig {/*** 定义广播交换机* @return*/@Beanpublic FanoutExchange fanoutExchange() {final FanoutExchange fanoutExchange = new FanoutExchange("自定义广播类型的交换机名称");return fanoutExchange;}
}

发送

 @Autowiredprivate AmqpTemplate amqpTemplate;//发送到订阅数据的exchange中amqpTemplate.convertAndSend("自定义广播类型的交换机名称",//fanout类型的exchange会忽略routing-key,所以这里的binding key传空字符串"",message);

消费

import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
/*** 将数据发送给队列1* @param message*/@RabbitListener(bindings = @QueueBinding(value = @Queue(“自定义队列1”),exchange = @Exchange(value = "自定义广播类型的交换机名称",type = ExchangeTypes.FANOUT),//fanout类型exchange会忽略binding-keykey = ""))public void doSynAddDataToJD(String message) {log.info("广播模式,同步数据给订阅方");}/*** 将数据发送给队列2* @param message*/@RabbitListener(bindings = @QueueBinding(value = @Queue(“自定义队列2”),exchange = @Exchange(value = "自定义广播类型的交换机名称",type = ExchangeTypes.FANOUT),key = ""))public void doSynAddDataToJD(String message) {log.info("广播模式,同步数据给订阅方");}

总结

实现发布订阅(广播模式)的关键在于对exchange类型的理解,可参考amqp协议、rabbitmq入门、springboot集成rabbitmq 、AMQP 0-9-1 Model Explained,源码中的类型有如下几种

package org.springframework.amqp.core;/*** Constants for the standard Exchange type names.** @author Mark Fisher* @author Gary Russell*/
public abstract class ExchangeTypes {/*** Direct exchange.* routing key和binding key完全匹配*/public static final String DIRECT = "direct";/*** Topic exchange.* binding key可使用通配符来匹配routing key*/public static final String TOPIC = "topic";/*** Fanout exchange.* 会忽略routing key、binding key,消息发送到绑定exchange的全部queue*/public static final String FANOUT = "fanout";/*** Headers exchange.* 使用headers中的属性来匹配,有只匹配一项或者全部匹配可选*/public static final String HEADERS = "headers";/*** System exchange.* 这个类型,暂时缺乏相关资料。*/public static final String SYSTEM = "system";}

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

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

相关文章

Jmeter,提取响应体中的数据:正则表达式、Json提取器

一、正则表达式 1、线程组--创建线程组; 2、线程组--添加--取样器--HTTP请求; 3、Http请求--添加--后置处理器--正则表达式提取器; 4、线程组--添加--监听器--查看结果树; 5、线程组--添加--取样器--调试取样器。 响应体数据…

Axure动态面板的使用以及示例分享

目录 一. 什么是动态面板 二. 动态面板教程——以轮播图为例 2.1 创建动态面板 2.2 动态面板自适应大小 2.3 重复状态,将图片导入 2.4 添加交互事件——图片切换 2.5 效果展示 三. 多方式登录示例展示 四. 后台主界面左侧菜单栏示例展示 一. 什么是动态面板…

【C语言】C的面向对象

一、BREW接口实现 高通的BREW(Binary Runtime Environment for Wireless)是一个早期为手机设备开发的应用程序平台,用于开发在CDMA手机上运行的软件。尽管这个平台目前已经不太流行,但是在其使用高峰时期,开发者需要使…

vue2 tailwindcss jit模式下热更新失效

按照网上教程安装的tailwindcss,但是修改类名后热更新的时候样式没有生效,参考了大佬的文章,解决了该问题。 安装cross-env 修改前 "dev": " vue-cli-service serve", 修改后 "dev": "cross-env TAILWIN…

什么是数据项,什么是数据元

"数据项"和"数据元"是在数据管理和数据建模领域中经常使用的术语,它们有一些相似之处,但也有一些区别。 数据项(Data Item): 定义: 数据项是数据的最小单位,是不可分割的…

动手学深度学习-自然语言处理-预训练

词嵌入模型 将单词映射到实向量的技术称为词嵌入。 为什么独热向量不能表达词之间的相似性? 自监督的word2vec。 word2vec将每个词映射到一个固定长度的向量,这些向量能更好的表达不同词之间的相似性和类比关系。 word2vec分为两类,两类…

PPT插件-好用的插件-放映笔、绘图板-大珩助手

放映笔 幻灯片放映时,工具在幻灯片的左下方,本工具在幻灯片的右侧,可以移动,可以方便在右侧讲课时候使用 绘图板 可在绘图板上写签名、绘制图画、写字等等,点画笔切换橡皮擦,点插入绘图,将背景…

QT 记录

qml 移动窗口会闪烁 int main(int argc, char *argv[]) {QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);//orQCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL); }window 拉取qml程序依赖文件 打开QT自带的命令窗口,转到exe程序目录: …

车载以太网笔记

文章目录 以太网协议分层协议中间设备子网掩码物理层测试内容比较杂,后续会整理。 以太网协议分层 协议 中间设备

智能高效|AIRIOT智慧货运管理解决方案

随着全球贸易的增加和消费需求的不断扩大,货运行业面临更大的压力,传统货运行业运输效率低下、信息不透明,往往存在如下的运维问题和管理痛点: 无法实时定位和追踪信息:无法提供实时的货物位置信息,以便随…

布局前沿技术,紫光展锐推动6G创新融合发展

随着5G进入规模化商用阶段,6G研究已在全球范围内拉开帷幕。2023年6月,ITU发布了《IMT面向2030及未来发展的框架和总体目标建议书》,在升级5G三大应用场景的同时,扩展出三个跨领域场景,形成6G的六大应用场景&#xff0c…

【matlab】MATLAB 变量详解与应用

引言 MATLAB 是一种强大的科学计算和数据分析工具,而变量是 MATLAB 中最基本和核心的概念之一。在 MATLAB 中,变量用于存储和表示数据,并且在算法和模型的开发过程中起到了关键的作用。本文将深入探讨 MATLAB 中的变量,包括变量的…

Axios入门案例——后端学习

目录 后端准备 导入依赖 解决跨域 User实体类 DemoController测试接口 前端准备 项目结构 axios.js axios.html 开始测试 后端结果 前端结果 后端准备 导入依赖 案例会用到以下的三个依赖。 <dependency><groupId>org.springframework.boot</gro…

WIFI标签注册流程

WIFI桌牌 K: 注册键&#xff0c;R: 复位键 长按K键不动&#xff0c;绿灯长亮&#xff0c;再按一下R键&#xff0c;等待绿灯快闪后就可以松开按键&#xff0c;绿灯变慢闪&#xff0c;设备即可进入配置注册模式。 4.2寸WiFi标签 右键: 注册键&#xff0c;背后键: 复位键 长按右…

Github 2023-12-16开源项目日报Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-16统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目2非开发语言项目2TypeScript项目1Jupyter Notebook项目1Go项目1PHP项目1JavaScript项目1C#项目1 精…

Python自动化办公:提升工作效率的利器

引言&#xff1a; 在现代社会中&#xff0c;办公效率的提升成为了各行各业追求的目标。而随着科技的不断发展&#xff0c;Python作为一种简单易学、功能强大的编程语言&#xff0c;正逐渐成为自动化办公的首选工具。本文将介绍如何使用Python实现自动化办公&#xff0c;从而提高…

LeetCode:2415. 反转二叉树的奇数层(层次遍历 Java)

目录 2415. 反转二叉树的奇数层 题目描述&#xff1a; 实现代码与解析&#xff1a; BFS 原理思路&#xff1a; 2415. 反转二叉树的奇数层 题目描述&#xff1a; 给你一棵 完美 二叉树的根节点 root &#xff0c;请你反转这棵树中每个 奇数 层的节点值。 例如&#xff0c;…

【JVM从入门到实战】(七)运行时数据区的组成

运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。 《Java虚拟机规范》中规定了每一部分的作用 线程不共享&#xff1a;程序计数器、虚拟机栈、本地方法栈 线程共享&#xff1a;方法区&#xff0c;堆 1. 程序计数器(Program Count…

TCP服务器的编写(上)

tcp服务器的初始化&#xff0c;第一件事情就是创建套接字 目前来说我们的tcp套接和udp套接是没有任何区别的&#xff01;&#xff01;&#xff01; 那么接下来&#xff0c;如果是udp创建好套接字在进行绑定&#xff0c;那么基本上就完成我们udp服务器的初始化 而我们tcp创建好…

十六、YARN和MapReduce配置

1、部署前提 &#xff08;1&#xff09;配置前提 已经配置好Hadoop集群。 配置内容&#xff1a; &#xff08;2&#xff09;部署说明 &#xff08;3&#xff09;集群规划 2、修改配置文件 MapReduce &#xff08;1&#xff09;修改mapred-env.sh配置文件 export JAVA_HOM…