From 4e55237f4c0b6d0645c9c95466416c4e9ddcb0c4 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Fri, 18 Aug 2023 09:48:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B6=88=E6=81=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=BC=82=E5=B8=B8=E8=AE=B0=E5=BD=95--system=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/mq/constant/BusinessTopic.java | 5 -- .../java/com/njcn/mq/message/UserMessage.java | 23 ------- .../njcn/mq/template/UserMessageTemplate.java | 38 ----------- .../system/api/RocketMqLogFeignClient.java | 22 +++++++ ...RocketMqLogFeignClientFallbackFactory.java | 40 ++++++++++++ .../system/pojo/po/RocketmqMsgErrorLog.java | 52 +++++++++++++++ .../RocketmqMsgErrorLogController.java | 64 +++++++++++++++++++ .../mapper/RocketmqMsgErrorLogMapper.java | 16 +++++ .../mapping/RocketmqMsgErrorLogMapper.xml | 5 ++ .../service/IRocketmqMsgErrorLogService.java | 16 +++++ .../impl/RocketmqMsgErrorLogServiceImpl.java | 20 ++++++ 11 files changed, 235 insertions(+), 66 deletions(-) delete mode 100644 pqs-common/common-mq/src/main/java/com/njcn/mq/message/UserMessage.java delete mode 100644 pqs-common/common-mq/src/main/java/com/njcn/mq/template/UserMessageTemplate.java create mode 100644 pqs-system/system-api/src/main/java/com/njcn/system/api/RocketMqLogFeignClient.java create mode 100644 pqs-system/system-api/src/main/java/com/njcn/system/api/fallback/RocketMqLogFeignClientFallbackFactory.java create mode 100644 pqs-system/system-api/src/main/java/com/njcn/system/pojo/po/RocketmqMsgErrorLog.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/controller/RocketmqMsgErrorLogController.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/mapper/RocketmqMsgErrorLogMapper.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/RocketmqMsgErrorLogMapper.xml create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/service/IRocketmqMsgErrorLogService.java create mode 100644 pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/RocketmqMsgErrorLogServiceImpl.java diff --git a/pqs-common/common-mq/src/main/java/com/njcn/mq/constant/BusinessTopic.java b/pqs-common/common-mq/src/main/java/com/njcn/mq/constant/BusinessTopic.java index 555b567b4..5435a5845 100644 --- a/pqs-common/common-mq/src/main/java/com/njcn/mq/constant/BusinessTopic.java +++ b/pqs-common/common-mq/src/main/java/com/njcn/mq/constant/BusinessTopic.java @@ -7,11 +7,6 @@ package com.njcn.mq.constant; */ public interface BusinessTopic { - /*** - * 测试阶段用的用户主题 - */ - String NJCJ_USER_TOPIC = "njcnUserTopic"; - /** * 治理主送推送数据接收主题 */ diff --git a/pqs-common/common-mq/src/main/java/com/njcn/mq/message/UserMessage.java b/pqs-common/common-mq/src/main/java/com/njcn/mq/message/UserMessage.java deleted file mode 100644 index 1cf46a44d..000000000 --- a/pqs-common/common-mq/src/main/java/com/njcn/mq/message/UserMessage.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.njcn.mq.message; - -import com.njcn.middle.rocket.domain.BaseMessage; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -import java.time.LocalDate; - -/** - * @author hongawen - * @version 1.0.0 - * @date 2023年08月10日 14:45 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@AllArgsConstructor -@NoArgsConstructor -public class UserMessage extends BaseMessage { - private String userName; - private LocalDate birthday; -} diff --git a/pqs-common/common-mq/src/main/java/com/njcn/mq/template/UserMessageTemplate.java b/pqs-common/common-mq/src/main/java/com/njcn/mq/template/UserMessageTemplate.java deleted file mode 100644 index 4cf1bd61b..000000000 --- a/pqs-common/common-mq/src/main/java/com/njcn/mq/template/UserMessageTemplate.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.njcn.mq.template; - -import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate; -import com.njcn.mq.constant.BusinessTopic; -import com.njcn.mq.message.UserMessage; -import org.apache.rocketmq.client.producer.SendResult; -import org.apache.rocketmq.spring.core.RocketMQTemplate; -import org.springframework.stereotype.Component; - -import java.time.LocalDate; -import java.util.UUID; - -/** - * @author hongawen - * @version 1.0.0 - * @date 2023年08月10日 14:44 - */ -@Component -public class UserMessageTemplate extends RocketMQEnhanceTemplate { - - - public UserMessageTemplate(RocketMQTemplate template) { - super(template); - } - - /** - * 入参只需要传入是哪个订单号和业务体消息即可,其他操作根据需要处理 - * 这样对于调用者而言,可以更加简化调用 - */ - public SendResult sendMember(String userName, LocalDate birthday) { - UserMessage message = new UserMessage(); - message.setKey(UUID.randomUUID().toString()); - message.setUserName(userName); - message.setBirthday(birthday); - return send(BusinessTopic.NJCJ_USER_TOPIC, "CREATE", message); - } - -} \ No newline at end of file diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/api/RocketMqLogFeignClient.java b/pqs-system/system-api/src/main/java/com/njcn/system/api/RocketMqLogFeignClient.java new file mode 100644 index 000000000..740ffce71 --- /dev/null +++ b/pqs-system/system-api/src/main/java/com/njcn/system/api/RocketMqLogFeignClient.java @@ -0,0 +1,22 @@ +package com.njcn.system.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.system.api.fallback.RocketMqLogFeignClientFallbackFactory; +import com.njcn.system.pojo.po.RocketmqMsgErrorLog; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年08月18日 09:29 + */ +@FeignClient(value = ServerInfo.SYSTEM, path = "/rocketmqMsgErrorLog", fallbackFactory = RocketMqLogFeignClientFallbackFactory.class, contextId = "rocketmqMsgErrorLog") +public interface RocketMqLogFeignClient { + + @PostMapping("/add") + HttpResult add(@RequestBody RocketmqMsgErrorLog rocketmqMsgErrorLog); + +} diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/api/fallback/RocketMqLogFeignClientFallbackFactory.java b/pqs-system/system-api/src/main/java/com/njcn/system/api/fallback/RocketMqLogFeignClientFallbackFactory.java new file mode 100644 index 000000000..cec988bde --- /dev/null +++ b/pqs-system/system-api/src/main/java/com/njcn/system/api/fallback/RocketMqLogFeignClientFallbackFactory.java @@ -0,0 +1,40 @@ +package com.njcn.system.api.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.system.api.RocketMqLogFeignClient; +import com.njcn.system.pojo.po.RocketmqMsgErrorLog; +import com.njcn.system.utils.SystemEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022年01月05日 15:08 + */ +@Slf4j +@Component +public class RocketMqLogFeignClientFallbackFactory implements FallbackFactory { + + @Override + public RocketMqLogFeignClient create(Throwable cause) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (cause.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) cause.getCause(); + exceptionEnum = SystemEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new RocketMqLogFeignClient() { + @Override + public HttpResult add(RocketmqMsgErrorLog rocketmqMsgErrorLog) { + log.error("{}异常,降级处理,异常为:{}", "保存消息异常数据", cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/pojo/po/RocketmqMsgErrorLog.java b/pqs-system/system-api/src/main/java/com/njcn/system/pojo/po/RocketmqMsgErrorLog.java new file mode 100644 index 000000000..b801b9a4d --- /dev/null +++ b/pqs-system/system-api/src/main/java/com/njcn/system/pojo/po/RocketmqMsgErrorLog.java @@ -0,0 +1,52 @@ +package com.njcn.system.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import java.time.LocalDateTime; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * rocketmq消息处理记录表 + *

+ * + * @author hongawen + * @since 2023-08-17 + */ +@Data +@TableName("rocketmq_msg_error_log") +public class RocketmqMsgErrorLog{ + + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String id; + + /** + * key + */ + private String key; + + /** + * 来源 + */ + private String resource; + + /** + * 记录 + */ + private String record; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/controller/RocketmqMsgErrorLogController.java b/pqs-system/system-boot/src/main/java/com/njcn/system/controller/RocketmqMsgErrorLogController.java new file mode 100644 index 000000000..ae351809f --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/controller/RocketmqMsgErrorLogController.java @@ -0,0 +1,64 @@ +package com.njcn.system.controller; + + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.OperateType; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.common.utils.LogUtil; +import com.njcn.system.pojo.param.DictDataParam; +import com.njcn.system.pojo.po.RocketmqMsgErrorLog; +import com.njcn.system.service.IRocketmqMsgErrorLogService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; +import com.njcn.web.controller.BaseController; + +/** + *

+ * rocketmq消息处理记录表 前端控制器 + *

+ * + * @author hongawen + * @since 2023-08-17 + */ +@Slf4j +@RestController +@RequestMapping("/rocketmqMsgErrorLog") +@RequiredArgsConstructor +public class RocketmqMsgErrorLogController extends BaseController { + + private final IRocketmqMsgErrorLogService rocketmqMsgErrorLogService; + + /** + * 新增消息异常记录 + * + * @param rocketmqMsgErrorLog 消息异常数据 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("/add") + @ApiOperation("新增消息异常记录") + @ApiImplicitParam(name = "rocketmqMsgErrorLog", value = "消息异常数据", required = true) + public HttpResult add(@RequestBody RocketmqMsgErrorLog rocketmqMsgErrorLog) { + String methodDescribe = getMethodDescribe("add"); + LogUtil.njcnDebug(log, "{},消息异常数据:{}", methodDescribe, rocketmqMsgErrorLog); + boolean result = rocketmqMsgErrorLogService.save(rocketmqMsgErrorLog); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } else { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + } + + +} + diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/RocketmqMsgErrorLogMapper.java b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/RocketmqMsgErrorLogMapper.java new file mode 100644 index 000000000..cebfee05d --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/RocketmqMsgErrorLogMapper.java @@ -0,0 +1,16 @@ +package com.njcn.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.system.pojo.po.RocketmqMsgErrorLog; + +/** + *

+ * rocketmq消息处理记录表 Mapper 接口 + *

+ * + * @author hongawen + * @since 2023-08-17 + */ +public interface RocketmqMsgErrorLogMapper extends BaseMapper { + +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/RocketmqMsgErrorLogMapper.xml b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/RocketmqMsgErrorLogMapper.xml new file mode 100644 index 000000000..9c6705454 --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/RocketmqMsgErrorLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/IRocketmqMsgErrorLogService.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/IRocketmqMsgErrorLogService.java new file mode 100644 index 000000000..b7bc3d34f --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/IRocketmqMsgErrorLogService.java @@ -0,0 +1,16 @@ +package com.njcn.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.system.pojo.po.RocketmqMsgErrorLog; + +/** + *

+ * rocketmq消息处理记录表 服务类 + *

+ * + * @author hongawen + * @since 2023-08-17 + */ +public interface IRocketmqMsgErrorLogService extends IService { + +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/RocketmqMsgErrorLogServiceImpl.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/RocketmqMsgErrorLogServiceImpl.java new file mode 100644 index 000000000..31962a37d --- /dev/null +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/RocketmqMsgErrorLogServiceImpl.java @@ -0,0 +1,20 @@ +package com.njcn.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.system.mapper.RocketmqMsgErrorLogMapper; +import com.njcn.system.pojo.po.RocketmqMsgErrorLog; +import com.njcn.system.service.IRocketmqMsgErrorLogService; +import org.springframework.stereotype.Service; + +/** + *

+ * rocketmq消息处理记录表 服务实现类 + *

+ * + * @author hongawen + * @since 2023-08-17 + */ +@Service +public class RocketmqMsgErrorLogServiceImpl extends ServiceImpl implements IRocketmqMsgErrorLogService { + +}