rocketmq一些异常记录
rocketmq一些异常记录
Product 设置不重复发送 发送 一次失败,不会在被发送到mq消息队列中,相当于消息丢失。
2、
Consumer 消费失败 重试三次消费 都失败 则消息消费失败,失败后 会放入 死信队列,可以手动处理在mq面板 处理死信队列里的消息 触发重新消费。
几乎没有这样的场景,代码已经优化处理完成,已经使用全局try catch处理。
问题一、
1、明明项目服务配置的是远程的 mqserver地址 ,但是服务就是之请求 127.0.1、0.1:9876 ,因为本地没有服务 所以 就提示 远程请求失败。
但是远程服务 一切正常、 防火墙也正常
经排查 就是 配置文件 因为版本不同 所以指定server的属性名字也不同
这个配置不生效
binder:
namesrv-addr
名字修改
name-server
问题二、
发送消息到 rocketmq 服务端失败
Caused by: org.apache…rocketmq.client.exception.MQBrokerException: CODE 14 DESC: service not available now. It may be caused by one of the following reasons: the broker’s disk is full [CL: 0.92 CQ: 0.92 INDEX: 0.92], messages are put to the slave, message store has be
原因:
因为linux的盘符使用 占满 只剩 430k了 ,已经超过 99%了
所以线上向mq 服务端发消息失败。导致很多任务无法结束
后来是因为 我们的文件服务器 有人一次性上了 10G左右的文件导致。
因为我们给 服务存放的空间设置有限。固定盘符给我们的平台使用。
解决方法:
在 conf 文件夹下 broker.conf文件最后面添加如下属性
diskMaxUsedSpaceRatio=99
在 runserver.sh 、runbroker.sh 中 扩大内存
问题三、
Linux centos7 重新配置 mq的路径 store 和 日志路径,然后 broker 无法启动 报错
Broker.log 里的错误很少
决办法 是应为 修改完路径后 store里面的
主要原因是创建了abort、checkpoint这两个文件夹 将这两个文件夹删掉就行了。这两个是文件,不应该是文件夹
问题四、
记录异常 rocketmq的 异常事故
生产服务器上 有一个 rocketmq的 server 和 brocker ip= 10.82.xxx.1
测试服务器 也部署了一套rocketmq的 server 和brocker ip=10.82.xxx.2
我在测试服务器上 启动server 然后 要启动 brocker
执行命令
nohup sh mqbroker -n 10.82.xxx.2:9876 autoCreateTopicEnable=true -c broker.conf &
但是不小心 将 这里的 ip指向了生产服务器的ip
导致 生产上 通过控制台 查看 发现 集群那里显示的 brocker 竟然是 测试环境的 ip地址。
然后 就发生了 生产环境的 consumer 在不断地消费 测试环境上的 历史的 消息。导致数据库 入库了很多 错误的数据库。
最后 解决方式 就是 将 生产的 rocketmq 的 store文件夹都删除,然后重新创建了 一个空的 store 文件夹 ,重新启动 rocketmq 服务 server 和 brocker 。这下就好了。
这个解决方式 只是最简单 的。因为目前并没有 恢复历史数据。 好在我们每天凌晨12点会备份 昨天的 store文件。
其实后续不用删除整个store文件夹
直接删除 store中部分文件
https://blog.csdn.net/fangletian1981/article/details/46709741
只删除 store文件中 如下文件即可
abort abort.bak checkpoint commitlog compaction config consumequeue index lock timerwheel
里面的完全删除 commitlog 、完全删除 consumequeue 、完全删除index
部分删除 config中的 四个文件
consumerOffset.json delayOffset.json consumerOffset.json.bak delayOffset.json.bak
问题 六
rocketmq send time out
Linux rocketmq连接超时
生产服务器正常,只有测试环境rocketmq出现这个错误
最总找到的原因 是 公司安装的一个安全软件 导致的,电脑关闭这个软件 ,mq就能正常访问了。 如果不关闭 访问控制台时 会提示 你没有访问的权限。 mq的控制面板
http://10.xxx.xxx:8082mq的控制面板,关闭这个 sdp的安全软件就好了。