From 798ab2be7ec3e8b1736be0e0f999049b8ad205fe Mon Sep 17 00:00:00 2001 From: beeajax <1105173470@qq.com> Date: Sun, 18 Jun 2023 09:25:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A2=AB=E5=8A=A8=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=87=8D=E8=AF=95=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/collect/web/job/TrackRetryJob.java | 21 +++------------ .../collect/web/service/CollectService.java | 19 +++----------- .../web/service/TrackRetryService.java | 26 +++++++++++++++++++ 3 files changed, 34 insertions(+), 32 deletions(-) create mode 100644 common-collect/src/main/java/com/docus/server/collect/web/service/TrackRetryService.java diff --git a/common-collect/src/main/java/com/docus/server/collect/web/job/TrackRetryJob.java b/common-collect/src/main/java/com/docus/server/collect/web/job/TrackRetryJob.java index 081170e..1b21ded 100644 --- a/common-collect/src/main/java/com/docus/server/collect/web/job/TrackRetryJob.java +++ b/common-collect/src/main/java/com/docus/server/collect/web/job/TrackRetryJob.java @@ -1,17 +1,11 @@ package com.docus.server.collect.web.job; -import com.docus.core.util.json.JSON; -import com.docus.log.executor.TrackRetrySpringExecutor; -import com.docus.log.handler.IJobHandler; -import com.docus.log.handler.MethodJobHandler; import com.docus.server.collect.web.common.entity.TaskOriginalMessage; import com.docus.server.collect.web.service.ITaskOriginalMessageService; +import com.docus.server.collect.web.service.TrackRetryService; import com.docus.server.common.enums.StateEnum; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; -import org.springframework.retry.annotation.Backoff; -import org.springframework.retry.annotation.Retryable; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -26,24 +20,17 @@ public class TrackRetryJob { @Resource private ITaskOriginalMessageService messageService; + @Resource + private TrackRetryService trackRetryService; @XxlJob("trackRetryJob") public void retry() throws Exception { List messages = messageService.findBy("state", StateEnum.FAIL); for (TaskOriginalMessage message : messages) { - doRetry(message); + trackRetryService.doRetry(message); } } - @Async("recordMessage") - @Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000L, multiplier = 1.5)) - public void doRetry(TaskOriginalMessage message) throws Exception { - IJobHandler jobHandler = TrackRetrySpringExecutor.loadJobHandler(message.getRetryKey()); - String name = ((MethodJobHandler) jobHandler).getMethod().getParameterTypes()[0].getName(); - Object o = JSON.fromJSON(message.getJsonStr(), Class.forName(name)); - jobHandler.execute(o); - //to write retry log - } } diff --git a/common-collect/src/main/java/com/docus/server/collect/web/service/CollectService.java b/common-collect/src/main/java/com/docus/server/collect/web/service/CollectService.java index 4b4021d..740951e 100644 --- a/common-collect/src/main/java/com/docus/server/collect/web/service/CollectService.java +++ b/common-collect/src/main/java/com/docus/server/collect/web/service/CollectService.java @@ -1,7 +1,7 @@ package com.docus.server.collect.web.service; import com.docus.core.util.Func; -import com.docus.log.annotation.TrackRetry; +import com.docus.log.annotation.TrackRetryListener; import com.docus.server.record.common.pojo.dto.TBasicDTO; import com.docus.server.record.service.ITBasicService; import com.docus.server.sys.common.pojo.dto.DeptDTO; @@ -10,7 +10,6 @@ import com.docus.server.sys.service.IPowerDeptService; import com.docus.server.sys.service.IPowerUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -26,13 +25,9 @@ public class CollectService { private ITBasicService tBasicService; /** - * 默认3次重试 * 科室数据 */ - /*@Async("recordMessage") - @Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000L, multiplier = 1.5))*/ - @Transactional(rollbackFor = Exception.class) - @TrackRetry("dept") + @TrackRetryListener("dept") public void insertOrUpdateDept(DeptDTO deptDTO) { //异步写入归档系统,失败自动重试。 if (checkType(deptDTO.getOperateType(), DEL_TYPE)) { @@ -44,11 +39,8 @@ public class CollectService { /** * 用户信息 - * - * @param userDTO */ - @Transactional(rollbackFor = Exception.class) - @TrackRetry("user") + @TrackRetryListener("user") public void insertOrUpdateUser(UserDTO userDTO) { // 判断操作类型 if (checkType(userDTO.getOperateType(), DEL_TYPE)) { @@ -60,11 +52,8 @@ public class CollectService { /** * 基础数据 - * - * @param tBasicDTO */ - @TrackRetry("basic") - @Transactional(rollbackFor = Exception.class) + @TrackRetryListener("basic") public void insertOrUpdateBasic(TBasicDTO tBasicDTO) { Integer num = tBasicService.findByJzh(tBasicDTO.getJzh()); if (num > 0) { diff --git a/common-collect/src/main/java/com/docus/server/collect/web/service/TrackRetryService.java b/common-collect/src/main/java/com/docus/server/collect/web/service/TrackRetryService.java new file mode 100644 index 0000000..5f19ccb --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/web/service/TrackRetryService.java @@ -0,0 +1,26 @@ +package com.docus.server.collect.web.service; + +import com.docus.core.util.json.JSON; +import com.docus.log.executor.TrackRetrySpringExecutor; +import com.docus.log.handler.IJobHandler; +import com.docus.log.handler.MethodJobHandler; +import com.docus.server.collect.web.common.entity.TaskOriginalMessage; +import org.springframework.retry.annotation.Backoff; +import org.springframework.retry.annotation.Retryable; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +@Service +public class TrackRetryService { + + @Async("recordMessage") + @Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000L, multiplier = 1.5)) + public void doRetry(TaskOriginalMessage message) throws Exception { + IJobHandler jobHandler = TrackRetrySpringExecutor.loadJobHandler(message.getRetryKey()); + String name = ((MethodJobHandler) jobHandler).getMethod().getParameterTypes()[0].getName(); + Object o = JSON.fromJSON(message.getJsonStr(), Class.forName(name)); + jobHandler.execute(o); + + //to write retry log + } +}