spring boot学习第二十三篇:Spring Boot集成RocketMQ
前置条件先安装好RocketMQ
希望在Window10安装rocketMQ并简单使用,可以参考如下文章:
Window10安装rocketMQ并简单使用-CSDN博客
1、pom.xml文件里面加上依赖
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version></dependency>
pom.xml全文如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.hmblogs</groupId><artifactId>hmblogs</artifactId><version>0.0.1-SNAPSHOT</version><name>hmblogs</name><description>hmblogs</description><properties><java.version>8</java.version><druid.version>1.2.8</druid.version><log4jdbc.version>1.16</log4jdbc.version><es.version>7.9.2</es.version><easyexcel.version>3.3.4</easyexcel.version><redisson.version>2.15.2</redisson.version></properties><dependencies><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version></dependency><!-- 操作minio的java客户端--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.1</version></dependency><!-- jwt鉴权相应依赖--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.11.2</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>${redisson.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.0</version></dependency><!-- druid数据源驱动 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mybatis --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--Mysql依赖包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--监控sql日志--><dependency><groupId>org.bgee.log4jdbc-log4j2</groupId><artifactId>log4jdbc-log4j2-jdbc4.1</artifactId><version>${log4jdbc.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.9</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId></dependency><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency><!-- high client--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>${es.version}</version><exclusions><exclusion><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId></exclusion><exclusion><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId></exclusion></exclusions></dependency><!-- rest-high-level-client 依赖如下2个jar --><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${es.version}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>${es.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-data-mongodb</artifactId>-->
<!-- </dependency>--><!-- spring需要依赖日志文件--><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><!-- <dependency>-->
<!-- <groupId>org.aspectj</groupId>-->
<!-- <artifactId>aspectjweaver</artifactId>-->
<!-- <version>1.9.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.aspectj</groupId>-->
<!-- <artifactId>aspectjrt</artifactId>-->
<!-- <version>1.9.0</version>-->
<!-- </dependency>--><dependency><groupId>com.googlecode.aviator</groupId><artifactId>aviator</artifactId><version>5.3.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>com.googlecode.xmemcached</groupId><artifactId>xmemcached</artifactId><version>2.4.7</version></dependency><dependency><groupId>net.spy</groupId><artifactId>spymemcached</artifactId><version>2.10.3</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
2、application.yml配置文件需要加上如下配置:
rocketmq:name-server: 127.0.0.1:9876producer:group: superman-producer-group
该配置文件全部内容如下:
server:port: 8081servlet.context-path: /hmblogs#配置数据源
spring:datasource:druid:db-type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpyurl: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hmblogs}?useSSL=true&allowPublicKeyRetrieval=true&serverTimezone=UTCusername: ${DB_USER:root}password: ${DB_PWD:demo}redis:host: localhostport: 6379password: hemingdatabase: 10
# data:
# mongodb:
# host: 43.138.0.199
# port: 27017
# username: hmblogs
# password: demo
# database: hmblogs
# authentication-database: adminservlet:multipart:max-file-size: 10MBmax-request-size: 10MB#minio配置minio:access-key: Irr1hKVWRacP91HAqJ60secret-key: demourl: http://localhost:9000 #访问地址bucket-name: hmblogs-bucketes:host: 43.138.0.199port: 9200scheme: httpuser: elasticpassword: democaptcha:width: 200height: 100rocketmq:name-server: 127.0.0.1:9876producer:group: superman-producer-group
3、生产者代码如下:
package com.hmblogs.backend.controller;import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/mq")
@Slf4j
public class MqProducerController {@Autowiredprivate RocketMQTemplate rocketMQTemplate;@RequestMapping("/producer")public String producer(@RequestParam("msg") String msg){log.info("我要发消息:"+msg);rocketMQTemplate.convertAndSend("first-topic","你好" + msg);return "connected";}
}
4、消费者代码如下:
package com.hmblogs.backend.util;import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;@Component
@RocketMQMessageListener(topic = "first-topic", consumerGroup = "superman-consumer-group")
@Slf4j
public class MqConsumer implements RocketMQListener<String> {@Overridepublic void onMessage(String message) {log.info("我的RocketMQ接收到的消息为:"+message);//在此处添加自己要加的逻辑}
}
5、调用生产者的生产消息接口

查看日志,发现打印的日志符合预期

调用生产者的生产消息接口,msg参数换一下

查看日志,发现打印的日志符合预期

相关文章:
spring boot学习第二十三篇:Spring Boot集成RocketMQ
前置条件先安装好RocketMQ 希望在Window10安装rocketMQ并简单使用,可以参考如下文章: Window10安装rocketMQ并简单使用-CSDN博客 1、pom.xml文件里面加上依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId&…...
去掉el-table中自带的边框线
1.问题:el-table中自带的边框线 2.解决后的效果: 3.分析:明明在el-table中没有添加border,但是会出现边框线. 可能的原因: 由 Element UI 的默认样式或者表格的某些内置样式引起的。比如,<el-table> 会通过 border-collapse 或 border-spacing 等属性影响边框的显示。 4…...
C语言gdb调试
目录 1.gdb介绍 2.设置断点 2.1.测试代码 2.2.设置函数断点 2.3.设置文件行号断点 2.4.设置条件断点 2.5.多线程调试 3.删除断点 3.1.删除指定断点 3.2.删除全部断点 4.查看变量信息 4.1.p命令 4.2.display命令 4.3.watch命令 5.coredump日志 6.总结 1.gdb介绍…...
Spring项目创建流程及配置文件bean标签参数简介
Spring文档根目录——里面可以找到所有版本 1. 项目搭建流程 1. pom.xml中引入依赖Spring-webMVC <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artif…...
reactor中的并发
1. reactor中的并发有两种方式 1.1 flatmap,底层是多线程并发处理。在reactor的演讲中,flatmap对于io类型的并发效果较好. flamap有两个参数: int concurrency, int prefetch。分别代表并发的线程数和缓存大小 注意凡是参数中有prefetch的,都…...
太速科技-418-基于AD9361 +ZYNQ7020 的软件无线电 SDR 套件
基于AD9361 ZYNQ7020 的软件无线电 SDR 套件 一、板卡信息 ● ZYNQ芯片采用XC7Z020,逻辑容量更大,支持更大的逻辑设计; ● 内存采用两片512M DDR3,共1GByte,更大容量。 ● 支持千兆网口,支持ZEDFMCO…...
监控易:一体化智能运维的扩展性优势深度解析
在现代企业数字化转型过程中,IT运维的需求日益多样化。企业不仅需要高效监控庞大的IT资源,还需应对多业务系统的集成需求,同时确保监控系统具备足够的灵活性以满足个性化的场景应用。 监控易凭借“一体化智能运维”的理念和技术,展…...
朴素贝叶斯算法:从生活到数学的完整解析
朴素贝叶斯算法:从生活到数学的完整解析 1. 引言:生活中的贝叶斯思维 想象你是一位医生,看到一位病人: 发烧(体温39度)咳嗽喉咙痛你会如何判断他是得了感冒还是新冠?这就是一个典型的贝叶斯思维过程。 2. 从直觉到数学 2.1 直觉思维 我们的思维过程是: 知道新冠和…...
Echarts的认识和基本用法
Echarts介绍和使用 Echarts介绍 官网地址:Apache ECharts Echarts是一个基于JavaScript的开源可视化图表库,由百度前端开发团队研发和维护。它提供了丰富的图表类型、数据统计分析、动态数据更新、多维数据展示等功能,可以帮助开发人员在 W…...
Linux文件系统的安全保障---Overlayroot!
overlayroot 是一种使用 OverlayFS 实现的功能,可将根文件系统挂载为只读,并通过一个临时的写层实现对文件系统的修改。这种方法非常适合嵌入式设备或需要保持系统文件完整性和安全性的场景。下文以 RK3568 平台为例,介绍制作 overlayroot 的…...
【Linux 之一 】Linux常用命令汇总
Linux常用命令 ./catcd 命令chmodclearcphistoryhtoplnmkdirmvpwdrmtailunamewcwhoami 我从2021年4月份开始才开始真正意义上接触Linux,最初学习时是一脸蒙圈,啥也不会,啥也不懂,做了很多乱七八糟,没有条理的笔记。不知…...
【线性代数】通俗理解特征向量与特征值
这一块在线性代数中属于重点且较难理解的内容,下面仅个人学习过程中的体会,错误之处欢迎指出,有更简洁易懂的理解方式也欢迎留言学习。 文章目录 概念计算几何直观理解意义 概念 矩阵本身就是一个线性变换,对一个空间中的向量应用…...
Unity 热更新基础知识
文章目录 1.一些名词2.三种编译方式3.Unity 两种脚本后端3.1 Mono3.2 IL2CPP3.3 对比 1.一些名词 IL(Intermediate Language):中间语言(类似于汇编代码)CIL(Common Intermediate Language)&…...
安全基础-互联网技术基础
互联网技术基础 概述:计算机网络、网络协议、HTTP协议、前端与后端技术、Web服务器、数据库以及浏览器等 目录 互联网技术基础前言一、计算机网络定义二、网络协议和协议分层1.OSI七层模型2.TCP/IP四层模型 三、HTTP协议1、HTTP协议的特点2、HTTP请求3、HTTP响应4、…...
深度学习从入门到实战——卷积神经网络原理解析及其应用
卷积神经网络CNN 卷积神经网络前言卷积神经网络卷积的填充方式卷积原理展示卷积计算量公式卷积核输出的大小计算感受野池化自适应均值化空洞卷积经典卷积神经网络参考 卷积神经网络 前言 为什么要使用卷积神经网络呢? 首先传统的MLP的有什么问题呢? - …...
React快速上手到项目实战总篇
React核心价值与前置知识 时刻保持对知识的渴望 家人们 开学!!! 核心价值 组件化(易开发易维护) 数据驱动视图 :定义好数据和ui的显示规则 即UIf(state) 只关注业务数据修改,不在操作DOM 增加开发效率 使用vite创建Recat项目 …...
HTMLHTML5革命:构建现代网页的终极指南 - 0. 课程目录设计
结构清晰,层层递进 课程从基础知识(如HTML学前必知)开始,逐步深入到高级应用(如PWA配置和WebApp优化)。每个模块都有明确的目标,适合零基础学员逐步掌握HTML。 覆盖范围广 这套课程涵盖了HTM…...
ffplay 命令行 从视频第N帧开始读取 ffmpeg 命令行 提取第N帧图片
ffmpeg中没有直接的命令读取第N帧 但是可以通过 t N/framerate 来获取到具体第N帧的时间 然后用 -ss t进行跳转。 比如帧率(frame rate)为24fps的视频G:/1/1.mp4文件从第1000帧开始进行播放,先计算出时间为 t 41.66666 ffplay -i G:/1/1.…...
Spring AMQP-保证消费者消息的可靠性
为什么要保证消息的可靠性? 当MQ向消费者发送一个消息之后需要得到消费者的状态,因为消息并不一定就真的被消费者给消费了,可能在消费的过程中出现了一些意外,比如 1. 网络问题 2. 消息转换有问题 3. 消费者本身的业务处理有问题 …...
Linux(Centos 7.6)命令详解:mkdir
1.命令作用 如果目录还不存在,则创建目录(Create the DIRECTORY, if they do not already exist.) 2.命令语法 Usage: mkdir [OPTION]... DIRECTORY... 3.参数详解 OPTION: -m, --modeMODE,创建新目录同时设置权限模式-p, --parents,创…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...
拟合问题处理
在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...
