快速解决
指定容器启动参数,增加时区及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
如果本文对你有所帮助,可以关注我的公众号!