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

RocketMQ核心组件实战:从零部署namesrv、broker与dashboard,并完成消息收发(三)

1. 环境准备与组件部署

在开始部署RocketMQ核心组件之前,我们需要先准备好基础环境。这里以Linux系统为例,假设你已经安装了JDK 1.8+和Maven环境。如果你还没有安装,可以通过以下命令快速安装:

# 安装OpenJDK 8 sudo apt-get update sudo apt-get install openjdk-8-jdk # 验证Java版本 java -version # 安装Maven sudo apt-get install maven

1.1 下载RocketMQ

首先从Apache官网下载最新稳定版的RocketMQ:

wget https://archive.apache.org/dist/rocketmq/5.1.3/rocketmq-all-5.1.3-bin-release.zip unzip rocketmq-all-5.1.3-bin-release.zip cd rocketmq-5.1.3

1.2 部署NameServer

NameServer是RocketMQ的路由中心,负责管理Broker的路由信息。部署NameServer非常简单:

# 启动NameServer nohup sh bin/mqnamesrv & # 查看启动日志,确认是否启动成功 tail -f ~/logs/rocketmqlogs/namesrv.log

当你看到"The Name Server boot success..."的日志时,说明NameServer已经成功启动。默认情况下,NameServer会监听9876端口。

1.3 部署Broker

Broker是RocketMQ的核心组件,负责消息的存储和转发。在部署Broker前,我们需要先修改配置文件:

# 修改Broker配置文件 vi conf/broker.conf

在配置文件中添加以下基本配置:

brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH namesrvAddr=127.0.0.1:9876

保存后启动Broker:

# 启动Broker nohup sh bin/mqbroker -c conf/broker.conf & # 查看启动日志 tail -f ~/logs/rocketmqlogs/broker.log

看到"The broker[broker-a, 192.168.1.1:10911] boot success..."表示Broker启动成功。

1.4 部署Dashboard

Dashboard是RocketMQ的可视化管理控制台,我们可以通过Docker快速部署:

# 拉取最新Dashboard镜像 docker pull apacherocketmq/rocketmq-dashboard:latest # 启动Dashboard容器 docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.config.namesrvAddrs=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest

启动后,通过浏览器访问http://localhost:8080即可看到Dashboard界面。

2. 组件连通性验证

2.1 验证NameServer与Broker通信

Broker启动后会自动向NameServer注册。我们可以通过以下命令检查Broker是否成功注册:

# 查看Broker注册信息 sh bin/mqadmin clusterList -n 127.0.0.1:9876

如果输出中包含你部署的Broker信息,说明注册成功。

2.2 通过Dashboard验证

在Dashboard的"集群"页面,你应该能看到已注册的Broker节点信息。如果看不到,请检查:

  1. Dashboard配置的NameServer地址是否正确
  2. Broker配置的NameServer地址是否正确
  3. 防火墙是否放行了相关端口(9876, 10911等)

2.3 测试消息收发

我们可以使用RocketMQ自带的tools工具测试消息收发:

# 发送测试消息 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer # 在另一个终端消费消息 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

如果能看到消息正常生产和消费,说明整个系统运转正常。

3. 消息发送模式实战

3.1 同步发送模式

同步发送是最常用的模式,生产者会等待Broker返回确认消息后才继续执行。下面是Java代码示例:

public class SyncProducer { public static void main(String[] args) throws Exception { DefaultMQProducer producer = new DefaultMQProducer("sync_producer_group"); producer.setNamesrvAddr("127.0.0.1:9876"); producer.start(); for (int i = 0; i < 10; i++) { Message msg = new Message("TestTopic", "TagA", ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)); // 同步发送,等待Broker返回结果 SendResult sendResult = producer.send(msg); System.out.printf("%s%n", sendResult); } producer.shutdown(); } }

同步发送的优点是可靠性高,缺点是吞吐量相对较低,适合对可靠性要求高的场景。

3.2 异步发送模式

异步发送不需要等待Broker返回结果,通过回调函数处理发送结果:

public class AsyncProducer { public static void main(String[] args) throws Exception { DefaultMQProducer producer = new DefaultMQProducer("async_producer_group"); producer.setNamesrvAddr("127.0.0.1:9876"); producer.start(); for (int i = 0; i < 10; i++) { Message msg = new Message("TestTopic", "TagA", ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)); // 异步发送,设置回调函数 producer.send(msg, new SendCallback() { @Override public void onSuccess(SendResult sendResult) { System.out.printf("发送成功: %s%n", sendResult); } @Override public void onException(Throwable e) { System.out.printf("发送失败: %s%n", e); e.printStackTrace(); } }); } // 异步发送需要等待回调完成 Thread.sleep(5000); producer.shutdown(); } }

异步发送的优点是吞吐量高,缺点是需要在回调函数中处理异常情况。

3.3 单向发送模式

单向发送不关心发送结果,适用于日志收集等场景:

public class OnewayProducer { public static void main(String[] args) throws Exception { DefaultMQProducer producer = new DefaultMQProducer("oneway_producer_group"); producer.setNamesrvAddr("127.0.0.1:9876"); producer.start(); for (int i = 0; i < 10; i++) { Message msg = new Message("TestTopic", "TagA", ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)); // 单向发送,不关心结果 producer.sendOneway(msg); } producer.shutdown(); } }

单向发送的吞吐量最高,但可靠性最低,适合对可靠性要求不高的场景。

4. Dashboard监控与验证

4.1 查看消息轨迹

在Dashboard的"消息"页面,可以查看消息的发送和消费情况。点击"消息轨迹"可以查看消息的完整生命周期:

  1. 消息发送时间
  2. 消息存储的Broker
  3. 消息被哪些消费者消费
  4. 消费是否成功

4.2 创建和管理Topic

在"主题"页面,可以创建新的Topic或管理现有Topic:

  1. 点击"新增/更新"按钮
  2. 输入Topic名称(如"TestTopic")
  3. 设置读写权限(6表示可读可写)
  4. 设置队列数量(默认为8)
  5. 点击"提交"完成创建

4.3 重置消费位点

如果消息消费出现问题,可以在Dashboard上重置消费位点:

  1. 进入"主题"页面
  2. 找到目标Topic
  3. 点击"重置消费位点"
  4. 选择消费者组和重置时间点
  5. 确认重置

注意:广播模式不支持重置消费位点,且消费者必须在线才能重置。

4.4 发送测试消息

Dashboard还提供了直接发送测试消息的功能:

  1. 进入"主题"页面
  2. 找到目标Topic
  3. 点击"发送消息"
  4. 输入消息内容、Tag和Key
  5. 点击"发送"

这个功能非常适合在排查问题时快速验证消息通路是否正常。

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

相关文章:

  • 权威排名测评|武汉民办留学高中综合实力榜单、避坑要点与标杆院校详解 - 互联网科技品牌测评
  • 数字电子技术:从理论到实践的核心解题思路与典型电路分析
  • 如何快速掌握Audiveris:开源光学音乐识别(OMR)的完整教程
  • 宁波同城首饰上门回收,珠宝鉴定全程透明无隐形扣费 - 生活时报
  • 终极鸣潮模组指南:15个功能让你彻底改变游戏体验
  • 国家中小学智慧教育平台电子课本解析解决方案:一键获取PDF教材的终极指南 [特殊字符]
  • openEuler_chroot完全指南:如何快速创建安全隔离的Linux chroot环境
  • 抖音无水印下载终极指南:专业高效的批量下载解决方案
  • 【技术解析】CORAL:为神经网络序数回归注入一致性保证
  • 编写基于C++ Huffman 算法的无损压缩程序和解压程序
  • 2026沈阳和平区名表回收靠谱门店推荐,住在长白的表友都找易奢福变现 - 肉松卷
  • 【NI-DAQmx进阶】再生模式实战:动态切换与多通道同步输出
  • CAN总线拓扑与收发器选型:从原理到工程实践
  • 深度学习时代下目标配准误差(TRE)的评估与优化策略
  • 网站出海测速验收:从中国节点到全球节点的完整检查
  • 2026长沙江诗丹顿回收避坑!闲置名表变现怎么出价不吃亏 - 奢侈品回收机构参考
  • 2026深圳大牌首饰回收全攻略:7大合规平台测评,S级优选添价收11区覆盖安心变现 - 分享测评官
  • 面试官与燕双非的 Java SE 和 Spring Boot 对话
  • 2026正规资质回收,苏州全域名表鉴定回收全程可溯源 - 逸程奢侈品回收中心
  • 点播系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 如何高效使用Kitty终端:跨平台GPU加速终端的完整实战指南
  • TUXEDO Control Center:3个步骤彻底掌控你的笔记本性能与能耗
  • 浙江法兰保护盖供应商选哪家?2025-2026高资质源头厂家实力盘点 - 品研笔录
  • 从2天到2小时的盘点对账全流程重塑 - 企服数字化见闻
  • 重庆黄金上门回收怎么选?渝北、南岸、九龙坡、江北、巴南正规门店汇总!主城卖黄金避坑全指南 - 不晚生活号
  • 从局部到全局:Transformer如何重塑特征提取的范式
  • C++赋值运算符重载:自赋值陷阱与Copy and Swap技术深度解析
  • 终极WiX工具集指南:5步构建专业级Windows安装包
  • 电商数据分析2——基于用户行为路径的转化漏斗优化与精准营销
  • 深度解析开源游戏自动化引擎:基于图像识别的智能调度架构