添加重试
delayQueueManager.add(DelayQueueTypeEnum.FEE_CANCEL, cancelFeeRetryMsg, 3);
- DelayQueueTypeEnum.FEE_CANCEL:重试的类型,消费消息时,根据该类型定位对应的handler
- cancelFeeRetryMsg:请求参数
- 3: retrytime
封装重试context&发送延时消息
DelayContext delayContext = new DelayContext();
delayContext.setKey(typeEnum.toString());//DelayQueueTypeEnum
delayContext.setParam(JSON.toJSONString(obj));// param
delayContext.setCreateTime(System.currentTimeMillis());
delayContext.setRetryTimes(retryTimeTemp);
//判断当前重试次数
if (curExecuteCnt > delayContext.getRetryTimes()) {
return;
}
//发送延时消息 RETRY_TIMES_STRATEGY中定义了第几次延时多长时间,故取到的是延时时长
delayMqProducer.asynSendMsg(delayContext, getTopic(), RETRY_TIMES_STRATEGY[curExecuteCnt - 1]);