Windows系统下RocketMQ日志文件路径和报错解决

 

博主介绍:✌全网粉丝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文件
  1. 用记事本打开 consumerOffset.json

  2. 填入合法JSON内容(示例):

    {
      "offsetTable":{}
    }

  3. 保存后重启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. 预防措施

  1. 定期备份关键文件

    # 每日备份脚本
    Compress-Archive -Path C:\rocketmq\store\config\* -DestinationPath C:\backups\rocketmq_config_$(Get-Date -Format yyyyMMdd).zip

  2. 启用监控告警

    # broker.conf 添加
    enableMonitor=true
    monitorInterval=30000

  3. 升级到最新版本

    # 使用RocketMQ 5.x(修复了诸多文件处理BUG)
    curl -O https://archive.apache.org/dist/rocketmq/5.1.3/rocketmq-all-5.1.3-bin-release.zip


6. 验证修复效果

  1. 检查启动日志:

    2025-05-18 20:15:00 INFO  - Load consumer offset table successfully

  2. 查看生成的新文件:

    type C:\rocketmq\store\config\consumerOffset.json

    应显示合法JSON内容(如 {"offsetTable":{}}


通过以上步骤,可彻底解决因偏移量配置文件损坏导致的启动失败问题。建议优先采用 方法1+步骤1 的组合方案,既能快速恢复服务,又能预防未来再次出现同类问题。

3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡布奇诺-海晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值