15. RocketMQ 消息队列

Spring Cloud 微服务系列文章,点击上方合集↑

1. 简介

RocketMQ是一款开源的分布式消息中间件,它具有高可靠性、高性能和可伸缩性,被广泛用于构建分布式系统中的可靠消息传递服务。

官网地址: https://rocketmq.apache.org/

2. 工作流程

  • 启动 NameServer
  • 启动 Broker
  • 创建 Topic
  • 生产者发送消息
  • 消费者接受消息

3. 下载安装

3.1 直接下载(推荐)

官网下载(4.9.4版本):https://github.com/apache/rocketmq/releases

官网下载很慢,网盘下载(推荐):「rocketmq-4.9.4.zip」来自UC网盘分享
https://drive.uc.cn/s/c53ad060dbc14

3.2 编译安装

git clone https://gitee.com/apache/rocketmq.gitcd rocketmqgit checkout rocketmq-all-4.9.4mvn -Prelease-all -DskipTests clean install -U

打包后的文件在distribution/target/rocketmq-4.9.4目录下。

4. 启动服务

进入到bin目录。

4.1 启动NameServer

NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现。

# windows 启动
mqnamesrv# mac/linux 启动
sh mqnamesrv
# 后台启动
nohup sh mqnamesrv &
# 查看日志
tail -f logs/rocketmqlogs/namesrv.log# 关闭
sh mqshutdown namesrv

4.2 启动Broker

Broker主要负责消息的存储、投递和查询以及服务高可用保证。

# windows 启动
mqbroker -n localhost:9876# mac/linux 启动
sh mqbroker -n localhost:9876
# 后台启动
nohup sh mqbroker -n localhost:9876 &
# 查看日志
tail -f logs/rocketmqlogs/Broker.log # 关闭
sh mqshutdown broker

当JDK安装位置路径有空格(比如在Program Files目录下),启动Broker可能会出现如下问题:

找不到或无法加载主类 Files\Java\jdk1.8

解决办法就是把JDK挪一下位置,重新配置环境变量。

5. 运行监控台

rocketmq-dashboard是可视化管理控制台,可以在页面上查看RocketMQ的运行情况,可以对主题、生产者、消费者等进行可视化管理。

官网地址:https://github.com/apache/rocketmq-dashboard

5.1 直接下载(推荐)

这里把打包好的jar放在了云盘上,方便下载直接运行。

网盘下载jar包:「rocketmq-dashboard-1.0.1.jar」来自UC网盘分享
https://drive.uc.cn/s/f27758e0a0744

# 运行jar包
java -jar rocketmq-dashboard-1.0.1.jar

访问dashboard地址:http://localhost:8200/#/

  • 源码默认的端口是8080,我这里是把源码端口改为了8200后生成的jar包。

5.2 编译安装

通过源码编译生成jar包的方式如下:

git clone https://github.com/apache/rocketmq-dashboard.gitcd rocketmq-dashboardmvn clean package -Dmaven.test.skip=truejava -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

默认端口8080,修改端口的文件是\rocketmq-dashboard\src\main\resources\application.yml

这里改成了8200。

6. 生产者 rocketmq-producer

6.1 pom.xml

添加rocketmq-spring-boot-starter包依赖。

<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.2</version>
</dependency>

6.2 application.properties

配置rocketmq的服务地址和生产者的producer-group

# rocketmq 相关
rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=producer-group

6.3 ProducerController

一个get请求接口,路径是producer/send/{msg},通过rocketMQTemplate.send("test-topic", message)发送数据,指定发送的主题为test-topic

@RestController
@RequestMapping("producer")
public class ProducerController {@Resourceprivate RocketMQTemplate rocketMQTemplate;@GetMapping("send/{msg}")public String send(@PathVariable String msg) {MessageBuilder<String> builder = MessageBuilder.withPayload(msg);Message<String> message = builder.build();rocketMQTemplate.send("test-topic", message);System.out.println("生产者发送:" + msg);return msg;}}

7. 消费者 rocketmq-consumer

7.1 pom.xml

添加rocketmq-spring-boot-starter包依赖。

<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.2</version>
</dependency>

7.2 application.properties

配置rocketmq的服务地址和消费者的consumer-group

# rocketmq 相关
rocketmq.name-server=127.0.0.1:9876
rocketmq.consumer.group=consumer-group

7.3 TestMQListener

定义消息接收器,用于接收生产者产生的消息,并打印出来。

@Component
@RocketMQMessageListener(consumerGroup = "consumer-group", topic = "test-topic")
public class TestMQListener implements RocketMQListener<String> {@Overridepublic void onMessage(String s) {System.out.println("消费者收到:" + s);}
}
  • 注意这里的主题test-topic跟生产者的一致。

8. 测试

访问接口地址:

http://localhost:8111/producer/send/hello

# 生产者打印
生产者发送:hello
生产者发送:hello# 消费者打印
消费者收到:hello
消费者收到:hello

9. 总结

本文介绍了使用Spring Boot集成RocketMQ的方法,创建了一个生产者服务rocketmq-producer和一个消费者服务rocketmq-consumer。生产者可以将数据发送到RocketMQ服务器中,消费者可以订阅主题并接收、处理数据。这种集成方式方便快捷,可以快速实现RocketMQ的生产和消费功能。

RocketMQ可以用在电商订单系统、日志收集系统、实时数据处理系统等场景。


Spring Cloud 微服务系列 完整的代码在仓库的sourcecode/spring-cloud-demo目录下。

gitee(推荐):https://gitee.com/cunzaizhe/xiaohuge-blog

github:https://github.com/tigerleeli/xiaohuge-blog

关注微信公众号:“小虎哥的技术博客”,让我们一起成为更优秀的程序员❤️!

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

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

相关文章

【内网穿透】在Ubuntu搭建Web小游戏网站,并将其发布到公网访问

目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置固定二级子域名 4.1 保留一个二级子域名 4.2 配置二级子域名 4.3 测试访问公网固定二级子域名 前言 网&#xff1a;我们通常说的是互…

独立站FP广告总被限流?一文教你使用斗篷黑科技

FP产品作为高利润高回报的产品&#xff0c;它热度在出海商品中是一直居高不下的。但这类产品在独立站的运营中往往会遇到很多问题&#xff0c;例如最让商家头疼的投流问题&#xff0c;FP产品的推广营销很容易遭到平台的管控封禁&#xff0c;这时候往往会用到市面上现在很火的黑…

安卓手机使用油猴脚本教程

下载支持油猴脚本的浏览器 请现在应用商店下载 x浏览器 &#xff0c;如果自己手机应用商店没有的话&#xff0c;可以在官网下载安装包&#xff0c;然后手动安装。 x浏览器官网 应用图标&#xff1a; 导入油猴脚本 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1…

二、2023.9.28.C++基础endC++内存end.2

文章目录 17、说说new和malloc的区别&#xff0c;各自底层实现原理。18、 说说const和define的区别。19、 说说C中函数指针和指针函数的区别&#xff1f;20、 说说const int *a, int const *a, const int a, int *const a, const int *const a分别是什么&#xff0c;有什么特点…

华为云云耀云服务器L实例评测 | 实例使用教学之简单使用:通过命令行管理华为云云耀云服务器

华为云云耀云服务器L实例评测 &#xff5c; 实例使用教学之简单使用&#xff1a;通过命令行管理华为云云耀云服务器 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云耀云服务…

Vue 学习笔记 错误ResizeObserver loop completed with undelivered notifications

环境Vue3 Ts 使用了el-table 后&#xff0c;容易出现如下错误 ERROR ResizeObserver loop completed with undelivered notifications. at handleError (webpack-internal:///./node_modules/webpack-dev-server/client/overlay.js:299:58) at eval (webpack-internal:///./nod…

传统安防音视频平台架构

内部级联,为上下级均为自己平台海康子进程调用海康的设备SDKPTPCS通过封装代理不同的私有协议的差异,封装为大华统一的三代协议PC客户端通过调用平台SDKCMS一般采用双机热备技术PTPCS系统一般采用Windows嵌入式,由于部分设备厂家提供的SDK只有Windows的服务和服务之间的调用通过…

不同走向地下管线的地质雷达响应特征分析

不同走向地下管线的地质雷达响应特征分析 前言 以PVC管线为例&#xff0c;建立不同走向&#xff08;水平倾斜、垂直倾斜、水平相邻&#xff09;的三维管线地质模型&#xff0c;进行三维地质雷达数据模拟&#xff0c;分析不同走向地下管线的地质雷达响应特征。 文章目录 不同…

Spring Boot 常用注解详解:全面指南

Spring Boot 中有许多常用的注解&#xff0c;这些注解用于配置、管理和定义 Spring Boot 应用程序的各个方面。以下是这些注解按大类和小类的方式分类&#xff0c;并附有解释和示例。 一、Spring Boot 核心注解 SpringBootApplication 解释&#xff1a;这是一个组合注解&a…

传输层协议 UDP

传输层协议 UDP 一、UDP 协议段格式二、再谈 UDP 特点三、下期预告 一、UDP 协议段格式 源端口号&#xff1a;该字段是一个16 位的字段&#xff0c;表示发送方应用程序的端口号。 目的端口号&#xff1a;该字段与源端口类似&#xff0c;它也是一个16 位的字段&#xff0c;表示…

vue最新前端面试题系列(1-5)

前言: 欢迎浏览和关注本专栏《 前端就业宝典 》, 不管是扭螺丝还是造火箭, 多学点知识总没错。 这个专栏是扭螺丝之上要造火箭级别的知识,会给前端工作学习的小伙伴带来意想不到的帮助。 文章目录 1,Vue 常用的修饰符都有哪些?事件修饰符表单修饰符2,$route和 $router的…

基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2015/CEC2018/CEC2023(MATLAB代码)

一、动态多目标优化问题 1.1问题定义 1.2 动态支配关系定义 二、 基于自适应启动策略的混合交叉动态多目标优化算法 基于自适应启动策略的混合交叉动态多目标优化算法&#xff08;Mixture Crossover Dynamic Constrained Multi-objective Evolutionary Algorithm Based on Se…

YUM 升级 PHP7

文章目录 YUM 升级 PHP71. 查看当前 PHP 信息2. YUM 安装 PHP73. 查看 PHP 版本4. 启动PHP-FPM YUM 升级 PHP7 参考地址&#xff1a;网站地址 参考地址&#xff1a;网站地址 1. 查看当前 PHP 信息 # 查看 PHP 版本信息 php -v# 查看 yum 源中 PHP 信息 yum list | grep php2. …

Linux学习第22天:Linux中断驱动开发(一): 突如其来

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 中断作为驱动开发中很重要的一个概念&#xff0c;在实际的项目实践中经常用到。本节的主要内容包括中断简介、硬件原理分析、驱动程序开发及运行测试。其中驱动程…

网工内推 | H3C售前工程师,上市公司,13薪,有带薪年假、年终奖

01 长虹佳华 招聘岗位&#xff1a;高级售前工程师&#xff08;H3C&#xff09; 职责描述&#xff1a; 1. 负责公司签约代理的网络安全产品在区域的项目售前技术支持工作&#xff0c;包括项目售前交流、方案编写、招投标、产品测试等相关支持工作&#xff1b; 2. 与厂商产品部门…

多数据源Pagehelper怎么配置

1.遇到的问题 若依增加多数据源&#xff0c;分页报错&#xff0c;查了下pagehelper也要修改配置。 官方配置&#xff1a; 官方文档&#xff1a;连接多数据源sqlServer使用分页的情况下报错&#xff0c;不使用分页时正常。 Issue #I3NJMR 若依/RuoYi - Gitee.com 我的配置&a…

msvcp140.dll丢失的解决方法与msvcp140.dll是什么东西详细解析

在使用电脑时&#xff0c;可能会遇到打开软件时提示“找不到 msvcp140.dll&#xff0c;无法继续执行代码”的问题。这通常意味着你的计算机上缺少 Microsoft Visual C Redistributable 的运行时库&#xff0c;或者该库的版本不正确。下面是我找了几天的修复方法&#xff0c;今天…

搭建Android自动化python+appium环境

一. 需要软件 JDK:JAVA安装后配置JDK环境 SDK:SDK下载后配置adb环境 Python:pyhton语言 Pycharm:python脚本编译工具 Appium-python-client:pyhton中的库 Appium客户端 二. 搭建步骤 1. 配置JDK环境 ①. 下载安装java: https://www.oracle.com/java/technologies/jav…

聊聊并发编程——多线程之AQS

目录 队列同步器&#xff08;AQS&#xff09; 独占锁示例 AQS之同步队列结构 解析AQS实现 队列同步器&#xff08;AQS&#xff09; 队列同步器AbstractQueuedSynchronizer&#xff08;以下简称同步器&#xff09;&#xff0c;是用来构建锁或者其他同步组 件的基础框架&…

26591-2011 粮油机械 糙米精选机

声明 本文是学习GB-T 26591-2011 粮油机械 糙米精选机. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了糙米精选机的有关术语和定义、工作原理、型号及基本参数、技术要求、试验方法、检 验规则、标志、包装、运输和储存要求。 …