RocketMQ 控制台This date have't data

快速解决

指定容器启动参数,增加时区及jvm参数-Duser.timezone='Asia/Shanghai",并且挂载本地时区文件,如下

docker run --name mq -d -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.0.249:9876;172.16.8.248:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Duser.timezone='Asia/Shanghai'" -v /etc/localtime:/etc/localtime -p 9999:8080 -t styletang/rocketmq-console-ng 

解决思路

问题

rocketmq console运行一段时间后出现 This date have't data 这样的异常,异常信息如下:

[2020-02-12 00:17:13.213\] ERROR op=global\_exception\_handler\_print\_error org.apache.rocketmq.console.exception.ServiceException: This date have't data! 

异常意思大概是:该日期内没有数据

环境描述

我是采用docker部署的,参考官方文档https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console

解决

MQ集群是正常的,但出现This date have't data,怀疑是容器时间与服务器时间不一致。登录到容器查看时间

docker exec -it 容器id /bin/bash
# date  # 执行date命令查看时间

果然容器的时间与服务器的时间不一致。
解决方法如下,加入jvm 时区及系统时区文件挂载

docker run --name mq -d -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.0.249:9876;172.16.8.248:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Duser.timezone='Asia/Shanghai'" -v /etc/localtime:/etc/localtime -p 9999:8080 -t styletang/rocketmq-console-ng 

如果本文对你有所帮助,可以关注我的公众号!

你可能感兴趣的:(rocketmq,docker,linux,容器)