当前位置: 首页 > news >正文

RocketMQ-技术详解

----------------------------------------------------------------------------------------

RocketMQ 集成基础知识(新手友好版)

 
RocketMQ 是阿里开源的分布式消息中间件,核心用于解决系统间异步通信、削峰填谷、解耦等问题(比如电商下单后通知物流、支付回调、日志异步采集等场景)。下面从「核心概念→环境准备→基础集成→核心操作」一步步讲,新手能直接跟着做。
 

一、核心概念(先懂这些,集成不懵)

 
表格
 
概念通俗解释
Producer 消息生产者:负责发送消息到 RocketMQ(比如下单系统发送 “订单创建” 消息)
Consumer 消息消费者:负责接收并处理消息(比如物流系统接收 “订单创建” 消息开始发货)
Topic 消息主题:消息的 “分类标签”,生产者发消息到指定 Topic,消费者订阅 Topic 收消息
Queue 队列:Topic 下的细分队列,用于负载均衡(一个 Topic 可包含多个 Queue)
Broker RocketMQ 服务端节点:存储消息、转发消息(核心服务)
NameServer 注册中心:管理 Broker 地址,生产者 / 消费者通过它找到 Broker
Group 分组:Producer Group(生产者分组)/ Consumer Group(消费者分组),用于标识一组生产 / 消费实例
消息模式 集群模式(同组消费者分摊消息)、广播模式(同组消费者都收到所有消息)
 

二、环境准备(以 Java 为例,最常用)

 
  1. 安装 RocketMQ:先部署 RocketMQ 服务端(本地测试可装单机版),步骤:
    • 下载安装包(https://rocketmq.apache.org/zh/download/);
    • 启动 NameServer:nohup sh bin/mqnamesrv &
    • 启动 Broker:nohup sh bin/mqbroker -n localhost:9876 &
     
  2. 项目依赖:Maven 引入核心依赖(Spring Boot 项目推荐用 rocketmq-spring-boot-starter):
 
xml
 
 
<!-- Spring Boot 集成依赖(推荐) -->
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version>
</dependency>
<!-- 原生依赖(非 Spring Boot 项目) -->
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.9.7</version>
</dependency>
 
 
  1. 配置文件(application.yml):Spring Boot 项目配置 RocketMQ 连接信息:
 
yaml
 
 
rocketmq:name-server: localhost:9876  # NameServer 地址producer:group: demo-producer-group  # 生产者分组send-message-timeout: 3000  # 发送超时时间consumer:group: demo-consumer-group  # 消费者分组
 
 

三、基础集成:生产 / 消费消息(开箱即用)

 
1. 消息生产者(发送消息)
 
java
 
运行
 
 
 
 
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class DemoProducer {// 注入 RocketMQ 模板(Spring Boot 封装好的工具)@Autowiredprivate RocketMQTemplate rocketMQTemplate;// 发送普通同步消息(最常用)public void sendNormalMessage(String topic, String msg) {try {// 参数1:Topic名称(可加Tag,格式:topic:tag);参数2:消息内容rocketMQTemplate.convertAndSend(topic, msg);System.out.println("消息发送成功:" + msg);} catch (Exception e) {System.out.println("消息发送失败:" + e.getMessage());// 失败可重试/记录日志}}
}
 
 
2. 消息消费者(接收消息)
 
java
 
运行
 
 
 
 
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;// 注解配置:topic=订阅的主题,consumerGroup=消费者分组
@Component
@RocketMQMessageListener(topic = "demo-topic", consumerGroup = "demo-consumer-group")
public class DemoConsumer implements RocketMQListener<String> {// 接收到消息后执行的方法@Overridepublic void onMessage(String msg) {try {// 处理消息(比如业务逻辑:更新订单状态、通知物流等)System.out.println("收到消息:" + msg);// 无需手动确认,默认自动确认(集群模式下消息会分摊给同组消费者)} catch (Exception e) {System.out.println("消息处理失败:" + e.getMessage());// 处理失败可抛异常,RocketMQ 会重试(默认重试16次)}}
}
 
 
3. 测试调用
 
java
 
运行
 
 
 
 
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class RocketMQDemoApplication {public static void main(String[] args) {SpringApplication.run(RocketMQDemoApplication.class, args);}// 项目启动后发送测试消息@Beanpublic CommandLineRunner testSendMessage(DemoProducer producer) {return args -> {producer.sendNormalMessage("demo-topic", "这是一条测试纠纷案件消息");};}
}
 
 

四、关键注意事项(新手避坑)

 
  1. Topic 需提前创建:可通过 RocketMQ 控制台或命令行创建,否则发送消息会失败;
  2. 分组命名规范:Producer Group/Consumer Group 建议按 “业务 - 环境” 命名(如 order-producer-dev);
  3. 消息重试:消费者处理失败时,RocketMQ 会自动重试(默认 16 次),可配置重试次数和间隔;
  4. 消息持久化:RocketMQ 默认将消息持久化到磁盘,即使 Broker 重启,消息也不会丢失;
  5. 幂等性处理:消费者需保证 “重复消费同一条消息时,业务结果一致”(比如用消息 ID 做唯一键去重)。
 

总结

 
  1. RocketMQ 核心是「生产者发消息到 Topic,消费者订阅 Topic 收消息」,NameServer 负责地址管理,Broker 负责存储和转发;
  2. Java 集成优先用 rocketmq-spring-boot-starter,只需配置 NameServer 地址和分组,即可快速实现生产 / 消费;
  3. 集成时重点关注 Topic 创建、分组规范、消息重试和幂等性,避免消息丢失或重复处理。

----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------

http://www.jsqmd.com/news/454248/

相关文章:

  • 用拓展卡尔曼滤波(EKF)估计电池SOC的奇妙之旅
  • 电力市场中的风光场景生成与场景削减实践
  • 2026热收缩膜包装机厂家推荐指南:热收缩膜包装设备厂家、热收缩自动包装机厂家、热收缩边封机厂家选择指南 - 优质品牌商家
  • Tomcat 乱码问题彻底解决
  • [特殊字符] MangaLens:AI精准识别漫画气泡,对话内容一目了然
  • C#开发上位机:打造强大工业控制界面
  • 看完就会:专科生必备的降AIGC网站 —— 千笔·降AI率助手
  • Python数据分析:用逻辑回归预测泰坦尼克号幸存情况项目实战
  • 年成本降62%!汇源塑胶PP中空板的汽车零部件行业案例解析 - 速递信息
  • 2026最新AWHFVC防腐推荐!水池/混凝土/储罐/地坪/钢结构优质品牌榜单 - 十大品牌榜
  • Tomcat下载,安装,配置终极版(2024)
  • 定稿前必看!降AIGC平台 千笔·降AIGC助手 VS Checkjie,研究生专属首选!
  • 05 Multi-Agent 协作:如何通过“开会”解决单模型搞不定的复杂工程
  • 怎么开发微信小程序,一站式小程序制作指南 - 码云数智
  • [特殊字符] BigVGAN神级语音合成!NVIDIA黑科技一键生成高保真音频
  • 在一个字符串里面找另一个字符串(KMP算法)
  • 双碳目标下综合能源系统IES联合低碳优化调度探索
  • 【2026年3月最新盘点】四川地区靠谱的不锈钢水箱制造企业精选 - 深度智识库
  • 深度学习基础小鱼书笔记
  • 三门问题贝叶斯法是所求非所问——错位解析(数学等价概率不等价)
  • SmolVLM模型结构
  • 从组合总和到回溯模板:大厂算法面试的万能钥匙
  • P1437 敲砖块 Sol
  • 游戏上市公司合同系统实施复盘(一):当“功能落地”遇上“蓝图未定”,我们错在哪?
  • # 别追着新工具跑了!真实的小公司AI Coding落地生存指南
  • 2026最新防腐涂料及工程推荐!水池/混凝土/储罐/地坪/钢结构适用权威榜单 - 十大品牌榜
  • 多动症是什么?主要有哪些早期识别及治疗方法?
  • MySQL进阶版第二课时
  • 说说湖南成人专升本培训,哪家品牌靠谱且性价比高? - 工业设备
  • 计算机毕业设计springbootNBA体育赛事直播平台 基于SpringBoot的篮球赛事在线直播与数据管理系统 基于Java的NBA球赛实时转播与信息服务平台