公司有一个项目用了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)
}
<