diff --git a/msgpush-module-push/msgpush-module-push-server/pom.xml b/msgpush-module-push/msgpush-module-push-server/pom.xml index a393ced..cf1eea4 100644 --- a/msgpush-module-push/msgpush-module-push-server/pom.xml +++ b/msgpush-module-push/msgpush-module-push-server/pom.xml @@ -146,6 +146,22 @@ + + + + src/main/resources + false + + + + + src/main/java + + **/*.xml + + false + + \ No newline at end of file diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/Sender.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/Sender.java index b78b884..7282baf 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/Sender.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/Sender.java @@ -1,7 +1,9 @@ package com.njcn.msgpush.module.push.client.sender; +import com.njcn.msgpush.module.push.dal.mysql.message.MessageRecordMapper; import com.njcn.msgpush.module.push.service.channel.ChannelProviderConfigService; import com.njcn.msgpush.module.push.service.channel.ProviderErrorCodeMappingService; +import com.njcn.msgpush.module.push.service.retry.MessageRetryHistoryService; import com.njcn.msgpush.module.push.service.retry.MessageRetryQueueService; import com.njcn.msgpush.module.push.util.RestTemplateUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +27,10 @@ public class Sender { public ProviderErrorCodeMappingService providerErrorCodeMappingService; @Autowired public RestTemplateUtil restTemplateUtil; + @Autowired + public MessageRetryHistoryService messageRetryHistoryService; + @Autowired + public MessageRecordMapper messageRecordMapper; public final ThreadPoolExecutor MSG_PUSH_THREAD_POOL_EXECUTOR = new ThreadPoolExecutor( 5, diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/AliyunEmailSender.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/AliyunEmailSender.java index 30d8398..85fe96c 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/AliyunEmailSender.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/AliyunEmailSender.java @@ -92,18 +92,24 @@ public class AliyunEmailSender implements EmailSender { System.out.println(toJSONString(response)); if (HttpStatus.OK.value() == response.getStatusCode()) { message.setStatus(MessageStatusConstant.SUCCESS); + this.sender.messageRecordMapper.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.SUCCESS, null, null); + this.sender.messageRetryHistoryService.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.SUCCESS, null, null); this.sender.channelProviderConfigService.successUpdate(message.getProviderType(), message.getChannel()); return true; } else { message.setStatus(MessageStatusConstant.FAILED); message.setErrorCode(response.getStatusCode() + ""); - ProviderErrorCodeMappingDO providerErrorCode = this.sender.providerErrorCodeMappingService.getByProviderErrorCode(message.getProviderType(), message.getChannel(), response.getStatusCode() + ""); - if (ObjectUtil.isNotNull(providerErrorCode)) { - message.setErrorMsg(providerErrorCode.getOriginalMessage()); + ProviderErrorCodeMappingDO providerErrorCodeMappingDO = this.sender.providerErrorCodeMappingService.getByProviderErrorCode(message.getProviderType(), message.getChannel(), response.getStatusCode() + ""); + if (ObjectUtil.isNotNull(providerErrorCodeMappingDO)) { + message.setErrorMsg(providerErrorCodeMappingDO.getOriginalMessage()); + if (providerErrorCodeMappingDO.getShouldRetry() == 1) { + this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + } } else { message.setErrorMsg(MsgPushConstant.ERROR_MSG_UNKNOWN); } - this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + this.sender.messageRecordMapper.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.FAILED, message.getErrorCode(), message.getErrorMsg()); + this.sender.messageRetryHistoryService.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.FAILED, message.getErrorCode(), message.getErrorMsg()); this.sender.channelProviderConfigService.failureUpdate(message.getProviderType(), message.getChannel()); return false; } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/AliyunSmsSender.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/AliyunSmsSender.java index 25f9df9..a735b6b 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/AliyunSmsSender.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/AliyunSmsSender.java @@ -77,6 +77,8 @@ public class AliyunSmsSender implements SmsSender { LocalDateTime now = LocalDateTime.now(); long start = now.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); message.setSendTime(now); + // 更新上次重试时间 + this.sender.messageRetryQueueService.updateLastRetryTime(message.getMessageId(), now); SendSmsResponse response = this.smsClient.sendSmsWithOptions(request, runtimeOptions); LocalDateTime end = LocalDateTime.now(); message.setCostTime((int) (end.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() - start)); @@ -90,7 +92,15 @@ public class AliyunSmsSender implements SmsSender { message.setStatus(MessageStatusConstant.FAILED); message.setErrorCode(response.body.code); message.setErrorMsg(response.body.message); - this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + ProviderErrorCodeMappingDO providerErrorCodeMappingDO = this.sender.providerErrorCodeMappingService.getByProviderErrorCode(message.getProviderType(), message.getChannel(), response.body.code); + if (ObjectUtil.isNotNull(providerErrorCodeMappingDO)) { + message.setErrorMsg(providerErrorCodeMappingDO.getOriginalMessage()); + if(providerErrorCodeMappingDO.getShouldRetry() == 1){ + this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + } + } else { + message.setErrorMsg(MsgPushConstant.ERROR_MSG_UNKNOWN); + } this.sender.channelProviderConfigService.failureUpdate(message.getProviderType(), message.getChannel()); return false; } @@ -150,10 +160,20 @@ public class AliyunSmsSender implements SmsSender { message.setErrorCode(detail.errCode); if (ObjectUtil.isNotNull(providerErrorCodeMappingDO)) { message.setErrorMsg(providerErrorCodeMappingDO.getOriginalMessage()); + if(providerErrorCodeMappingDO.getShouldRetry() == 1){ + this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + } } else { message.setErrorMsg(MsgPushConstant.ERROR_MSG_UNKNOWN); } - this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + this.sender.messageRecordMapper.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.FAILED, message.getErrorCode(), message.getErrorMsg()); + this.sender.messageRetryHistoryService.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.FAILED, message.getErrorCode(), message.getErrorMsg()); + this.sender.channelProviderConfigService.failureUpdate(message.getProviderType(), message.getChannel()); + } else { + message.setStatus(MessageStatusConstant.SUCCESS); + this.sender.messageRecordMapper.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.FAILED, null, null); + this.sender.messageRetryHistoryService.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.FAILED, null, null); + this.sender.channelProviderConfigService.successUpdate(message.getProviderType(), message.getChannel()); } }); // } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/TelecomSmsSender.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/TelecomSmsSender.java index cedee6b..e6af233 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/TelecomSmsSender.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/client/sender/impl/TelecomSmsSender.java @@ -118,6 +118,9 @@ public class TelecomSmsSender implements SmsSender { LocalDateTime now = LocalDateTime.now(); long start = now.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); message.setSendTime(now); + // 更新上次重试时间 + this.sender.messageRetryQueueService.updateLastRetryTime(message.getMessageId(), now); +// this.setMessageIdToRedis(message); // 发送请求 ResponseEntity response1 = this.sender.restTemplateUtil.post( telecomSmsSetting.getApiUrl(), @@ -138,8 +141,15 @@ public class TelecomSmsSender implements SmsSender { ProviderErrorCodeMappingDO providerErrorCodeMappingDO = this.sender.providerErrorCodeMappingService.getByProviderErrorCode(message.getProviderType(), message.getChannel(), telecomSmsSendResponse.list.get(0).result + ""); message.setStatus(MessageStatusConstant.FAILED); message.setErrorCode(telecomSmsSendResponse.list.get(0).result + ""); - message.setErrorMsg(providerErrorCodeMappingDO.getOriginalMessage()); - this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + if (ObjectUtil.isNotNull(providerErrorCodeMappingDO)) { + message.setErrorMsg(providerErrorCodeMappingDO.getOriginalMessage()); + if(providerErrorCodeMappingDO.getShouldRetry() == 1){ + this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + } + } else { + message.setErrorMsg(MsgPushConstant.ERROR_MSG_UNKNOWN); + } + this.sender.channelProviderConfigService.failureUpdate(message.getProviderType(), message.getChannel()); return false; } }); @@ -150,7 +160,6 @@ public class TelecomSmsSender implements SmsSender { } catch (Exception e) { throw new RuntimeException(e); } - return b; } @@ -260,23 +269,68 @@ public class TelecomSmsSender implements SmsSender { // if (response.getStatusCode() == HttpStatus.OK) { TelecomSmsSelectResponse telecomSmsSelectResponse = JSON.parseObject(response.getBody(), TelecomSmsSelectResponse.class); TelecomSmsSelectDetailRes telecomSmsSelectDetailRes = telecomSmsSelectResponse.list.get(0); +// if (StrUtil.isBlank(message.getErrorMsg())) { +// message.setStatus(MessageStatusConstant.FAILED); +// ProviderErrorCodeMappingDO providerErrorCodeMappingDO = this.sender.providerErrorCodeMappingService.getByProviderErrorCode(message.getProviderType(), message.getChannel(), "MA:0006"); +// message.setErrorCode(telecomSmsSelectDetailRes.getStat()); +// if (ObjectUtil.isNotNull(providerErrorCodeMappingDO)) { +// message.setErrorMsg(providerErrorCodeMappingDO.getOriginalMessage()); +// } else { +// message.setErrorMsg(MsgPushConstant.ERROR_MSG_UNKNOWN); +// } +// this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); +// this.sender.channelProviderConfigService.failureUpdate(message.getProviderType(), message.getChannel()); +// } else { +// message.setStatus(MessageStatusConstant.SUCCESS); +// } if (telecomSmsSelectDetailRes.getStatus() == 5) { message.setStatus(MessageStatusConstant.FAILED); ProviderErrorCodeMappingDO providerErrorCodeMappingDO = this.sender.providerErrorCodeMappingService.getByProviderErrorCode(message.getProviderType(), message.getChannel(), telecomSmsSelectDetailRes.getStat()); message.setErrorCode(telecomSmsSelectDetailRes.getStat()); if (ObjectUtil.isNotNull(providerErrorCodeMappingDO)) { message.setErrorMsg(providerErrorCodeMappingDO.getOriginalMessage()); + if(providerErrorCodeMappingDO.getShouldRetry() == 1){ + this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + } } else { message.setErrorMsg(MsgPushConstant.ERROR_MSG_UNKNOWN); } - this.sender.messageRetryQueueService.saveOrUpdateRetryMessage(message); + this.sender.messageRecordMapper.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.FAILED, message.getErrorCode(), message.getErrorMsg()); + this.sender.messageRetryHistoryService.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.FAILED, message.getErrorCode(), message.getErrorMsg()); + this.sender.channelProviderConfigService.failureUpdate(message.getProviderType(), message.getChannel()); } if (telecomSmsSelectDetailRes.getStatus() == 4) { message.setStatus(MessageStatusConstant.SUCCESS); + this.sender.messageRecordMapper.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.SUCCESS, null, null); + this.sender.messageRetryHistoryService.updateStatusAndErrorInfo(message.getMessageId(), MessageStatusConstant.SUCCESS, null, null); + this.sender.channelProviderConfigService.successUpdate(message.getProviderType(), message.getChannel()); } -// } this.scheduledExecutorService.shutdown(); this.scheduledExecutorService = null; }, 10, TimeUnit.SECONDS); } + +/** + * 从redis中判断是否可以发送消息 + * + * @param message + * @return 将消息ID缓存到redis中 + * @param message + *

+ * 将消息ID缓存到redis中 + * @param message + */ +// private boolean canSend(MessageRecordDO message) { +// String cachedData = this.sender.redisTemplate.opsForValue().get(message.getMessageId()); +// return ObjectUtil.isNull(cachedData); +// } + +/** + * 将消息ID缓存到redis中 + * + * @param message + */ +// private void setMessageIdToRedis(MessageRecordDO message) { +// this.sender.redisTemplate.opsForValue().set(message.getMessageId(), message.getMessageId(), 60, TimeUnit.SECONDS); +// } } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/dataobject/channel/ProviderErrorCodeMappingDO.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/dataobject/channel/ProviderErrorCodeMappingDO.java index 1c63a27..903d354 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/dataobject/channel/ProviderErrorCodeMappingDO.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/dataobject/channel/ProviderErrorCodeMappingDO.java @@ -11,7 +11,7 @@ import lombok.EqualsAndHashCode; * @description 服务商错误码映射表 */ @Data -@TableName("push_channel_provider_config") +@TableName("push_provider_error_code_mapping") @EqualsAndHashCode(callSuper = true) public class ProviderErrorCodeMappingDO extends BaseDO { /** diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/message/MessageRecordMapper.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/message/MessageRecordMapper.java index 4294f39..f792fa2 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/message/MessageRecordMapper.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/message/MessageRecordMapper.java @@ -2,10 +2,10 @@ package com.njcn.msgpush.module.push.dal.mysql.message; import com.njcn.msgpush.framework.mybatis.core.mapper.BaseMapperX; import com.njcn.msgpush.module.push.dal.dataobject.message.MessageRecordDO; -import jakarta.validation.constraints.Pattern; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface MessageRecordMapper extends BaseMapperX { + int updateStatusAndErrorInfo(@Param("messageId") String messageId, @Param("status") String status, @Param("errorCode") String errorCode, @Param("errorMsg") String errorMsg); } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/message/mapping/MessageRecordMapper.xml b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/message/mapping/MessageRecordMapper.xml index d055cf5..643ddd9 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/message/mapping/MessageRecordMapper.xml +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/dal/mysql/message/mapping/MessageRecordMapper.xml @@ -3,5 +3,11 @@ - + + UPDATE push_message_record + SET status = #{status}, + error_code = #{errorCode}, + error_msg = #{errorMsg} + WHERE message_id = #{messageId} + \ No newline at end of file diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/job/MessageRetryJob.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/job/MessageRetryJob.java index a7c3219..955886c 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/job/MessageRetryJob.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/job/MessageRetryJob.java @@ -25,6 +25,7 @@ public class MessageRetryJob { */ @Scheduled(fixedRate = 3000) public void processSmsRetryQueue() { + log.info("开始处理短信重试队列:{}", LocalDateTime.now()); messageRetryQueueService.processRetryBatch("sms"); } @@ -33,7 +34,6 @@ public class MessageRetryJob { */ @Scheduled(fixedRate = 3000) public void processEmailRetryQueue() { - log.info("开始处理邮件重试队列:{}", LocalDateTime.now()); messageRetryQueueService.processRetryBatch("email"); } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordService.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordService.java index a278539..3a21fb8 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordService.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordService.java @@ -2,9 +2,7 @@ package com.njcn.msgpush.module.push.service.message; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.msgpush.module.push.controller.admin.message.vo.MessageRecordReqVO; -import com.njcn.msgpush.module.push.dal.dataobject.channel.ChannelProviderConfigDO; import com.njcn.msgpush.module.push.dal.dataobject.message.MessageRecordDO; -import org.apache.ibatis.annotations.Param; import java.io.Serializable; import java.util.Collection; @@ -22,6 +20,7 @@ public interface MessageRecordService { /** * 处理发送消息 + * * @param messageRecordDO * @return 发送是否成功的结果 */ @@ -50,9 +49,11 @@ public interface MessageRecordService { * * @param messageId * @param status + * @param errorCode + * @param errorMsg * @return */ - boolean updateStatus(String messageId, String status); + boolean updateStatusAndErrorInfo(String messageId, String status, String errorCode, String errorMsg); /** * 更新消息记录重试次数 diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java index 6936aa3..e9cc51b 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/message/MessageRecordServiceImpl.java @@ -82,9 +82,11 @@ public class MessageRecordServiceImpl extends ServiceImpl 0; } @Override diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryHistoryService.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryHistoryService.java index 4372176..3875552 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryHistoryService.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryHistoryService.java @@ -16,4 +16,15 @@ public interface MessageRetryHistoryService { * @return */ Integer getMaxRetrySequence(String messageId); + + /** + * 更新消息错误信息 + * + * @param messageId 消息ID + * @param status 状态 + * @param errorCode 错误码 + * @param errorMsg 错误信息 + * @return + */ + boolean updateStatusAndErrorInfo(String messageId, String status, String errorCode, String errorMsg); } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryHistoryServiceImpl.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryHistoryServiceImpl.java index 5291b9b..12f3f0b 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryHistoryServiceImpl.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryHistoryServiceImpl.java @@ -24,4 +24,19 @@ public class MessageRetryHistoryServiceImpl extends ServiceImpl messageIds); + + boolean updateLastRetryTime(String messageId, LocalDateTime now); } diff --git a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryQueueServiceImpl.java b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryQueueServiceImpl.java index 1e624fa..36b5c3c 100644 --- a/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryQueueServiceImpl.java +++ b/msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/service/retry/MessageRetryQueueServiceImpl.java @@ -236,6 +236,14 @@ public class MessageRetryQueueServiceImpl extends ServiceImpl