最近尝试着在CentOS7 搭建 RocketMQ
使用官网文档的教程进行搭建
直到 启动NameServer前面一切正常
启动Brocker出现了报错

1
2
3
4
5
6
7
8
9
10
at org.apache.rocketmq.store.ReferenceResource.shutdown(ReferenceResource.java:47)
at org.apache.rocketmq.store.logfile.DefaultMappedFile.destroy(DefaultMappedFile.java:551)
at org.apache.rocketmq.store.index.IndexFile.destroy(IndexFile.java:110)
at org.apache.rocketmq.store.index.IndexService.load(IndexService.java:72)
at org.apache.rocketmq.store.DefaultMessageStore.load(DefaultMessageStore.java:340)
at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:773)
at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:240)
at org.apache.rocketmq.proxy.ProxyStartup.createBrokerController(ProxyStartup.java:216)
at org.apache.rocketmq.proxy.ProxyStartup.createMessagingProcessor(ProxyStartup.java:174)
at org.apache.rocketmq.proxy.ProxyStartup.main(ProxyStartup.java:76)

这是因为 本人使用了高版本的JDK(JDK17) ,jdk1.8以上涉及到导包的问题,所以RocketMQ启动命令不兼容。
解决方法如下:

  1. 使用JDK1.8
  2. 更改启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
# 进入目录
cd {rock安装目录}/bin

# 打开启动脚本
vi runserver.sh

# 拉到最后一行
"$JAVA" ${JAVA_OPT} $@
# 更改为以下命令
"$JAVA" ${JAVA_OPT} --add-exports=java.base/sun.nio.ch=ALL-UNNAMED $@

# 修改后启动Brocker就没有报错了