Spring Cloud Stream整合RocketMQ
Spring Cloud Stream整合RocketMQ
这里书接上回,默认你已经搭建好了RocketMQ主从异步集群,前面文章已经介绍过搭建方法。
1、Spring Cloud Stream介绍
Spring Cloud Stream是一个框架,用于构建与共享消息系统连接的高度可扩展的事件驱动微服务。
官网:https://spring.io/projects/spring-cloud-stream
该框架提供了一个灵活的编程模型,该模型基于已经建立和熟悉的Spring习惯用法和最佳实践,包括对持久pub/sub语义、消费者组和有状态分区的支持。

Spring Cloud Stream的核心构建块是:
Destination Binders:负责提供与外部消息传递系统集成的组件。Destination Bindings:外部消息系统和最终用户提供的应用程序代码(生产者/消费者)之间的桥梁。Message:生产者和消费者用来与目标绑定器(以及通过外部消息系统的其他应用程序)进行通信的规范数据结构。
2、生产者
2.1 引入依赖
<dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-stream-rocketmq</artifactId><version>2.2.2.RELEASE</version><exclusions><exclusion><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId></exclusion><exclusion><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-acl</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.7.1</version></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-acl</artifactId><version>4.7.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
注意,RocketMQ官方维护的Spring-Cloud-Stream依赖中的rocketmq版本为4.4,需要排出后加入4.7.1的依。
2.2 编写配置文件
spring:application:name: my-spring-cloud-rocketmq-producercloud:stream:bindings:output:destination: TopicTestrocketmq:binder:name-server: 192.168.159.34:9876
server:port: 8080
2.3 启动类打上注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;@EnableBinding(Source.class)
@SpringBootApplication
public class MySpringCloudRocketmqProducerApplication {public static void main(String[] args) {SpringApplication.run(MySpringCloudRocketmqProducerApplication.class, args);}
}
其中,@EnableBinding(Source.class)指向配置文件的output参数。
2.4 编写生产者程序
import org.apache.rocketmq.common.message.MessageConst;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;@Component
public class MyProducer {@Resourceprivate Source source;public void sendMessage(String msg){//封装消息头Map<String,Object> headers=new HashMap<>();headers.put(MessageConst.PROPERTY_TAGS,"TagA");MessageHeaders messageHeaders=new MessageHeaders(headers);//创建消息对象Message<String> message = MessageBuilder.createMessage(msg, messageHeaders);//发送消息source.output().send(message);}
}
2.5 编写单元测试发送消息
@SpringBootTest
class MySpringCloudRocketmqProducerApplicationTests {@Autowiredprivate MyProducer producer;@Testvoid contextLoads() {producer.sendMessage("hello,spring cloud stream message");}}
3、消费者
3.1 引入依赖
与生产者相同。
3.2 编写配置文件
spring:application:name: my-spring-cloud-rocketmq-consumercloud:stream:bindings:# input消费者input:destination: TopicTestgroup: spring-cloud-stream-consumer-group# 配置RocketMQrocketmq:binder:name-server: 192.168.159.34:9876
server:port: 8081
3.3 启动类打上注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Sink;@EnableBinding(Sink.class)
@SpringBootApplication
public class MySpringCloudRocketmqConsumerApplication {public static void main(String[] args) {SpringApplication.run(MySpringCloudRocketmqConsumerApplication.class, args);}}
其中@EnableBinding(Sink.class)指向配置文件的input参数。
3.4 编写消费者程序
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;
import org.springframework.stereotype.Component;@Component
public class MyConsumer {@StreamListener(Sink.INPUT)public void processMessage(String message){System.out.println("收到的消息:"+message);}
}
先启动消费者,使用单元测试发送消息。

相关文章:
Spring Cloud Stream整合RocketMQ
Spring Cloud Stream整合RocketMQ 这里书接上回,默认你已经搭建好了RocketMQ主从异步集群,前面文章已经介绍过搭建方法。 1、Spring Cloud Stream介绍 Spring Cloud Stream是一个框架,用于构建与共享消息系统连接的高度可扩展的事件驱动微服…...
Web前端浪漫源码:编织梦想与爱的交织乐章
Web前端浪漫源码:编织梦想与爱的交织乐章 在数字世界的广袤宇宙中,Web前端浪漫源码犹如一段段秘密的旋律,编织着梦想与爱的交织乐章。它们不仅是技术的结晶,更是情感的载体,将浪漫与创意融入每一个像素和每一行代码之…...
【云岚到家】-day02-4-我的账户-实名认证
【云岚到家】-day02-4-我的账户-实名认证 1 我的账户设置-实战1.1 配置OSS1.2 需求分析1.2.1 服务端设置银行账户1.2.2 机构端设置银行账户1.2.3 表结构设计1.2.4 表结构相关的controller、service、mapper、entity 1.3 服务端设置银行账户接口设计1.3.1 新增或更新银行账号信息…...
MySQL复习题(期末考试)
MySQL复习题(期末考试) 1.MySQL支持的日期类型? DATE,DATETIME,TIMESTAMP,TIME,TEAR 2.为表添加列的语法? alter table 表名 add column 列名 数据类型; 3.修改表数据类型的语法是? alter table 表名 modify 列名 新…...
利用DVWA演示文件上传漏洞获取网站shell权限(二)
文件上传漏洞是网络安全中常见的一种漏洞类型,攻击者可以利用该漏洞上传恶意文件到服务器上,从而获得对网站的远程控制权限。本文将以DVWA (Damn Vulnerable Web Application) 为例,演示如何利用文件上传漏洞的Medium级别设置,绕过…...
Java---BigInteger和BigDecimal和枚举
1.简介 1.BigInteger可以支持任意长度的整数 2.BigDecimal可以支持任意精度的浮点数 3.用来做精确计算 2.创建方式 new BigInteger(); new BigInteger(参数1,进制):可以将不同进制转成10进制显示 new BigDecimal(); BigInteger.valueOf(); BigDecimal.valueOf();…...
mybatis数据批量更新
1、mybatis批量更新mapper <update id"updateBatchById"><foreach collection"list" item"s" separator";">updatetableNamesetname #{name},whereid #{id}</foreach> </update>通过在数据库连接URL中指定…...
自动驾驶#芯片-1
概述 汽车是芯片应用场景之一,汽车芯片需要具备车规级。 车规级芯片对加工工艺要求不高,但对质量要求高。需要经过的认证过程,包括质量管理标准ISO/TS 16949、可靠性标准 AEC-Q100、功能安全标准ISO26262等。 汽车内不同用途的芯片要求…...
【保姆级讲解下QT6.3】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
windows安装conda
1 Conda简介 Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。Conda 是为 Python 程序创建的,适用于 Linux,OS X 和Windows,也可以打包和分发其他软…...
ubuntu设置GPU功率
前言 上次发了一篇文章,我使用脚本自动根据GPU温度调整服务器风扇转速 但是我实测之后,发现这个方法还是压不住我GPU的温度,暂时不清楚什么原因 所以我准备把GPU功耗压低 先看看gpu的功耗限制 nvidia-smi -q -d POWER使用上面的命令会输出…...
[发布]嵌入式系统远程测控软件-基于Qt
目录 一. 引言二. 软件功能2.1 原理2.2 软件功能2.3 运行环境 三. 软件操作使用3.1 软件界面3.2 软件功能使用详解3.2.1 连接3.2.2 数据监测(串口示波器)3.2.3 数据修改3.2.4 数据保存 3.3 软件的硬件连接 四. 通信协议——STM32移植篇4.1 通信协议4.2 S…...
【数据结构】查找(顺序查找、二分查找、索引顺序查找、二叉排序树、平衡排序树、B树、B+树、哈希表)
目录 数据结构——查找何为查找1. 查找表2. 关键字3. 查找方法效果评价指标——平均查找长度ASL(Average Search Length) 静态查找表1.顺序查找2.二分查找二分查找判定树 3.静态查找表—索引顺序表的查找索引顺序查找表的算法原理: 动态查找树表1. 二叉排序树2. 二叉…...
远程连接路由器:方法大全与优缺点解析
远程连接路由器的方式主要有以下几种,以下是每种方式的详细说明及其优缺点: 使用Web浏览器登录 方法:通过配置路由器的远程管理功能,允许用户通过互联网浏览器访问路由器的管理界面。用户只需输入路由器的公网IP地址或域名&#…...
NI USB-6009 DAQ采集卡拆解
所需设备: 1、NI USB-6009采集卡; 2、逻辑分析仪; NI USB-6009采集卡全貌: 性能参数: 内部照片: ADC芯片指标: 接线图: 差分模式采样: 采集过程中的SPI总线数据监控&a…...
详细分析Mysql临时变量的基本知识(附Demo)
目录 前言1. 用户变量2. 会话变量 前言 临时变量主要分为用户变量和会话变量 1. 用户变量 用户变量是特定于会话的,在单个会话内可以在多个语句中共享 以 符号开头在 SQL 语句中使用 SET 语句或直接在查询中赋值 声明和赋值 SET var_name value; -- 或者 SE…...
JS的五种事件函数,各自应用场景又分别是什么
在JavaScript中,常用的五种事件函数包括: 1. onclick:当用户点击某个元素时触发,适用于处理按钮点击、链接点击等场景。 2. onkeydown:当用户按下某个键盘的按键时触发,适用于处理键盘输入相关的操作&#…...
电脑想加个WIFI功能,怎么选!
在快速发展的物联网和智能家居时代,Wi-Fi模块作为连接各类智能设备与互联网的桥梁,其重要性不言而喻。而为了让这些模块能够适应各式各样的应用场景,不同的接口技术应运而生。今天,我们就来深入浅出地探讨几种常见的Wi-Fi模块接口,包括它们的工作原理、特点以及适用场景,…...
机器学习——决策树
决策树 决策树可以理解为是一颗倒立的树,叶子在下端,根在最上面 一层一层连接的是交内部节点,内部节点主要是一些条件判断表达式,叶子叫叶节点,叶节点其实就是最终的预测结果,那么当输入x进去,…...
弘君资本:苹果股价暴涨,创历史新高!
当地时间6月11日,美股三大指数涨跌纷歧,标普500指数与纳指再创新高。 到收盘,道指跌0.31%,纳指涨0.88%,标普500指数涨0.27%。 苹果大涨逾7%创前史新高。美联储开端召开6月货币方针会议,周三发布利率决定。…...
构建本地AI记忆系统:五大记忆库与心跳回忆机制详解
1. 项目概述:一个让AI助手真正“记住你”的本地记忆系统 如果你用过OpenClaw、Claude Code或者任何AI助手,肯定遇到过这样的场景:昨天刚跟它详细讨论了一个项目方案,今天再问,它要么含糊其辞,要么又得从头解…...
开源机械爪智能增强:计算机视觉与运动规划赋予抓取超能力
1. 项目概述:当“机械爪”遇上“超能力”如果你玩过抓娃娃机,或者关注过工业自动化,对机械爪(Claw)这个概念一定不陌生。它的核心任务简单直接:识别、定位、抓取。但现实往往骨感——面对形状不规则、材质光…...
Flutter For Openharmony第三方库: animated_text_kit 的鸿蒙化适配指南
Flutter 三方库 animated_text_kit 的鸿蒙化适配指南 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 前言:文字是可动的 嘿~亲爱的开发者小伙伴们,大家好呀!👋 今天我们要一起探索一个超级有…...
高速SerDes设计中BER预测的智能应力输入方法
1. 高速串行链路设计中的BER预测挑战在当今高速数字系统设计中,SerDes(串行器/解串器)技术已成为主流接口方案,数据传输速率已突破10Gbps大关。随着速率提升,信号完整性(SI)问题日益突出,其中误码率(BER)预…...
Translumo:Windows游戏实时翻译的终极免费解决方案:如何轻松翻译游戏字幕和视频文本
Translumo:Windows游戏实时翻译的终极免费解决方案:如何轻松翻译游戏字幕和视频文本 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.c…...
从ARIMA差分到MIM网络:一个老派时间序列技巧如何革新了深度学习预测
从差分思想到记忆网络:传统时间序列技巧如何重塑深度学习架构 在气象预报的雷达回波图中,降水云团的形态每秒钟都在剧烈变化;城市交通流量监测数据里,早晚高峰的波动与平峰期形成鲜明对比;股票市场的价格曲线更是以难以…...
Nihonga风格AI生成稀缺资源包泄露:含17世纪狩野派笔触扫描集、200+古籍《本朝画史》描述性Prompt语料库、及唯一通过日本文化厅AI伦理审查的商用授权协议范本
更多请点击: https://intelliparadigm.com 第一章:Nihonga风格AI生成资源包的伦理边界与文化权重 文化符号的不可压缩性 Nihonga(日本画)并非仅由矿物颜料、金箔或桑皮纸构成的技术集合,其内嵌着神道自然观、物哀美学…...
ClawGuard:为Clawdbot AI智能体打造的安全监控与熔断防护系统
1. 项目概述:ClawGuard 是什么,以及为什么你需要它如果你正在使用或开发基于 Clawdbot 框架的 AI 智能体,那么“安全”和“可控”这两个词,大概率已经在你脑海里盘旋过无数次了。我接触过不少团队,从最初的兴奋于 AI 智…...
基于MCP与Apify的ESG供应链风险智能评估工具实战指南
1. 项目概述:一个为AI工作流赋能的ESG供应链风险智能评估工具 如果你是一名ESG分析师、供应链合规官或者投资经理,那么你一定对“供应商ESG尽职调查”这件事又爱又恨。爱的是,它确实能帮你识别潜在的环境、社会和治理风险,避免“…...
长期使用taotoken token plan套餐的成本节约感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用 Taotoken Token Plan 套餐的成本节约感受 对于需要稳定调用大模型 API 的个人开发者或团队而言,成本控制是一…...
