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