面对云服环境不稳定的RocketMq我们做了什么

本文讲述了在云服务环境中遇到RocketMq发送数据失败和回调信息丢失的问题,以及采取的日志记录、定时补发和状态监控等解决措施。通过生成dataId跟踪消息状态,利用定时任务检查并补偿缺失数据,最终建议改善MQ服务本身的稳定性。
摘要由CSDN通过智能技术生成

公司有一个项目用了RocketMq,我们运维把RocketMq集群搭建在了公司自有云服上,接下来我们的噩梦开始了。主要有以下2个问题:

1、producer发送数据失败

2、producer异步发送数据时,回调函数接收不到回调信息

针对上面第一个问题——producer发送数据失败

(1)我们记录发送日志,发送日志在回调函数中记录到《send_log 》中

(2)如果失败的话还要再将发送信息记录在《fail_log》里,fail_log有一个字段status(0:成功,1:失败)表示是否重发成功的这样做为了后面定时补发失败信息用

    

         @Override
        public void onSuccess(SendResult sendResult) {
            //保存成功日志    
             SendLog log=genSendLog(sendMsg,0);
              this.save(log)
        }

        @Override
        public void onException(Throwable e) {
           //保存失败日志
             SendLog log=genSendLog(sendMsg,1);
            this.save(log)
            //将失败数据保存到失败记录表里
            FailLog failLog=genFailLog(sendMsg);
            failLog.setStatus(1);
            this.saveFailLog(failLog)
        }
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值