第一次学习rocketmq使用官方的docker命令docker run -it --net=host --mount source=/tmp/store,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876
这个命令本身就有问题使用–mount默认是使用volume名但是这里写了路径,需要在前面加上type=bind
.直接执行发现启动失败查看日志
java.lang.NullPointerException
2023-12-27T07:42:54.574523199Z at org.apache.rocketmq.broker.schedule.ScheduleMessageService.configFilePath(ScheduleMessageService.java:271)
2023-12-27T07:42:54.574540907Z at org.apache.rocketmq.common.ConfigManager.persist(ConfigManager.java:82)
2023-12-27T07:42:54.574544338Z at org.apache.rocketmq.broker.BrokerController.shutdownBasicService(BrokerController.java:1409)
2023-12-27T07:42:54.574547705Z at org.apache.rocketmq.broker.BrokerController.shutdown(BrokerController.java:1484)
2023-12-27T07:42:54.574595409Z at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:242)
2023-12-27T07:42:54.574615630Z at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:50)
原因是权限不够,完整命令如下docker run -d --net=host --name=rocketmqBroker -v type=bind,source=/home/server/rocketmq,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876
,- u 0表示root用户启动启动成功之后日志打印
The broker[VM-4-15-centos, 10.0.4.15:10911] boot success. serializeType=JSON and name server is localhost:9876