博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌
博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦
🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。
🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
Java项目案例《100套》
https://blog.youkuaiyun.com/qq_57756904/category_12173599.html
uniapp小程序《100套》https://blog.youkuaiyun.com/qq_57756904/category_12173599.html
有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。
最后再送一句:最好是学会了,而不是学废了!!
2
启动代理报错
java.lang.NullPointerException
at org.apache.rocketmq.broker.schedule.ScheduleMessageService.configFilePath(ScheduleMessageService.java:273)
at org.apache.rocketmq.common.ConfigManager.persist(ConfigManager.java:79)
at org.apache.rocketmq.broker.BrokerController.shutdownBasicService(BrokerController.java:1522)
at org.apache.rocketmq.broker.BrokerController.shutdown(BrokerController.java:1618)
at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:250)
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:52)
日志路径
打开日志
2025-05-18 20:10:59 ERROR main - load C:\Users\A\store\config\consumerOffset.json failed, and try to load backup file
com.alibaba.fastjson.JSONException: syntax error,expect start with { or [,but actually start with EOF
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:701)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:394)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:298)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:588)
at org.apache.rocketmq.remoting.protocol.RemotingSerializable.fromJson(RemotingSerializable.java:56)
at org.apache.rocketmq.broker.offset.ConsumerOffsetManager.decode(ConsumerOffsetManager.java:303)
at org.apache.rocketmq.common.ConfigManager.load(ConfigManager.java:38)
at org.apache.rocketmq.broker.BrokerController.initializeMetadata(BrokerController.java:812)
at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:862)
at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:248)
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:52)
2025-05-18 20:10:59 ERROR main - load C:\Users\A\store\config\consumerOffset.json.bak Failed
com.alibaba.fastjson.JSONException: syntax error,expect start with { or [,but actually start with EOF
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:701)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:394)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:298)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:588)
at org.apache.rocketmq.remoting.protocol.RemotingSerializable.fromJson(RemotingSerializable.java:56)
at org.apache.rocketmq.broker.offset.ConsumerOffsetManager.decode(ConsumerOffsetManager.java:303)
at org.apache.rocketmq.common.ConfigManager.loadBak(ConfigManager.java:54)
at org.apache.rocketmq.common.ConfigManager.load(ConfigManager.java:44)
at org.apache.rocketmq.broker.BrokerController.initializeMetadata(BrokerController.java:812)
at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:862)
at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:248)
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:52)
解决方案,将下面两个删除
详细解决方案
这个错误表明 RocketMQ Broker 在启动时无法正确加载消费者偏移量配置文件 consumerOffset.json
,导致启动失败。以下是完整的解决方案:
1. 问题根源分析
-
错误文件:
C:\Users\A\store\config\consumerOffset.json
及其备份文件.bak
已损坏 -
具体原因:文件内容不是有效的 JSON 格式(空文件或格式错误)
-
影响:Broker 无法恢复消费者的消费进度偏移量
2. 紧急解决方案
方法1:删除损坏文件(自动重建)
:: 停止Broker服务
net stop RocketMQBroker
:: 删除损坏文件(先备份!)
del /f /q "C:\Users\A\store\config\consumerOffset.json"
del /f /q "C:\Users\A\store\config\consumerOffset.json.bak"
:: 重新启动Broker
net start RocketMQBroker
注意:此操作会导致消费者偏移量重置,可能造成消息重复消费
方法2:手动修复JSON文件
-
用记事本打开
consumerOffset.json
-
填入合法JSON内容(示例):
{ "offsetTable":{} }
-
保存后重启Broker
3. 根本性解决方案
步骤1:修改存储路径配置
在 broker.conf
中指定专用存储路径(避免使用用户目录):
# 修改为专用路径(确保目录存在)
storePathRootDir=C:/rocketmq/store
storePathConfig=C:/rocketmq/store/config
步骤2:配置自动恢复策略
# 当偏移量文件损坏时自动重建
brokerConfigFileBackup=true
fileReservedTime=48
步骤3:添加文件完整性检查
创建启动前检查脚本 pre_start.bat
:
@echo off
set FILE_PATH=C:\rocketmq\store\config\consumerOffset.json
:: 检查文件是否存在且非空
if not exist "%FILE_PATH%" (
echo {} > "%FILE_PATH%"
) else (
for %%F in ("%FILE_PATH%") do if %%~zF EQU 0 (
echo {} > "%FILE_PATH%"
)
)
4. 高级故障处理
情况1:文件权限问题
:: 授予完全控制权限
icacls "C:\Users\A\store" /grant "Everyone":(F) /T
情况2:FastJSON版本冲突
检查并统一依赖版本:
<!-- pom.xml 中强制指定版本 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version> <!-- 使用RocketMQ兼容版本 -->
</dependency>
情况3:磁盘空间不足
:: 检查磁盘空间
wmic logicaldisk get size,freespace,caption
5. 预防措施
-
定期备份关键文件:
# 每日备份脚本 Compress-Archive -Path C:\rocketmq\store\config\* -DestinationPath C:\backups\rocketmq_config_$(Get-Date -Format yyyyMMdd).zip
-
启用监控告警:
# broker.conf 添加 enableMonitor=true monitorInterval=30000
-
升级到最新版本:
# 使用RocketMQ 5.x(修复了诸多文件处理BUG) curl -O https://archive.apache.org/dist/rocketmq/5.1.3/rocketmq-all-5.1.3-bin-release.zip
6. 验证修复效果
-
检查启动日志:
2025-05-18 20:15:00 INFO - Load consumer offset table successfully
-
查看生成的新文件:
type C:\rocketmq\store\config\consumerOffset.json
应显示合法JSON内容(如
{"offsetTable":{}}
)
通过以上步骤,可彻底解决因偏移量配置文件损坏导致的启动失败问题。建议优先采用 方法1+步骤1 的组合方案,既能快速恢复服务,又能预防未来再次出现同类问题。
3