修改了scheduler lock 机制
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java
index de2afe3..14663ec 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/core/DayendSettleTask.java
@@ -1,10 +1,9 @@
package com.supwisdom.dlpay.framework.core;
import com.supwisdom.dlpay.framework.domain.TSettleLog;
-import com.supwisdom.dlpay.framework.domain.TTaskLock;
import com.supwisdom.dlpay.framework.service.DayendSettleService;
-import com.supwisdom.dlpay.framework.service.SystemUtilService;
import com.supwisdom.dlpay.framework.util.StringUtil;
+import net.javacrumbs.shedlock.core.SchedulerLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,32 +13,18 @@
@Component
public class DayendSettleTask {
@Autowired
- private SystemUtilService systemUtilService;
- @Autowired
private DayendSettleService dayendSettleService;
private TSettleLog settleLog;
private static final Logger logger = LoggerFactory.getLogger(DayendSettleTask.class);
- @Scheduled(cron="${dayend.settletask.cron}")
+ @Scheduled(cron = "${dayend.settletask.cron}")
+ @SchedulerLock(name = "DayendSettleTask")
public void doSettleTask() {
if (logger.isDebugEnabled()) logger.debug("进入日结算任务!");
-
- TTaskLock lock = null;
+ settleLog = dayendSettleService.doCreateSettleLog(); //记录日志
try {
- try {
- lock = systemUtilService.doLockTask("DAYENDSETTLETASK", 30, "日终结算");
- if (lock == null) {
- if (logger.isDebugEnabled()) logger.debug("日终结算正在其他服务器上执行");
- return;
- }
- } catch (Exception e) {
- return;
- }
-
- settleLog = dayendSettleService.doCreateSettleLog(); //记录日志
-
//step1: 账户校验(fixme: 清算任务?)
long t1 = System.currentTimeMillis();
if (!checkAccounts()) {
@@ -71,12 +56,6 @@
} catch (Exception e) {
logger.error("日终结算报错:" + (!StringUtil.isEmpty(e.getMessage()) ? e.getMessage() : e.getClass().getName()));
e.printStackTrace();
- } finally {
- if (null != lock) {
- lock.setTaskstatus(0);
- lock.setTasktime(systemUtilService.getSysdatetime().getHostdatetime());
- systemUtilService.updateTaskLock(lock);
- }
}
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java
index e1343d4..2c76329 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java
@@ -14,10 +14,6 @@
@Repository
public interface TaskLockDao extends JpaRepository<TTaskLock, String> {
- @Lock(LockModeType.PESSIMISTIC_WRITE)
- @Query("select a from TTaskLock a where a.taskcode=:taskcode")
- TTaskLock getTaskLockWithLock(@Param("taskcode") String taskcode);
-
//================= database=Oracle =================//
@Query(value = "select to_char(sysdate,'yyyymmdd') as hostdate,to_char(sysdate,'hh24miss') as hosttime,to_char(sysdate,'yyyymmddhh24miss') as hostdatetime, sysdate from dual", nativeQuery = true)
SystemDateTime getOracleDatetime();
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/SystemUtilService.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/SystemUtilService.java
index e575265..ca18764 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/SystemUtilService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/SystemUtilService.java
@@ -16,18 +16,6 @@
SystemDateTime getSysdatetime();
/**
- * 更新任务表
- */
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
- TTaskLock updateTaskLock(TTaskLock lock);
-
- /**
- * 取任务表
- */
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
- TTaskLock doLockTask(String taskcode, Integer minRecover, String remark);
-
- /**
* 获取记账日期
*/
String getAccdate();
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
index 51b2b0b..baf8449 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
@@ -57,37 +57,6 @@
}
@Override
- public TTaskLock updateTaskLock(TTaskLock lock) {
- return taskLockDao.save(lock);
- }
-
- @Override
- public TTaskLock doLockTask(String taskcode, Integer minRecover, String remark) {
- if (null == minRecover) minRecover = 10; //默认10分钟
- String hostdatetime = getSysdatetime().getHostdatetime(); //yyyyMMddHHmmss
- TTaskLock lock = taskLockDao.getTaskLockWithLock(taskcode);
- if (lock != null) {
- if (lock.getTaskstatus() == 1 && DateUtil.compareDatetime(DateUtil.getNewTime(hostdatetime, -60 * minRecover), lock.getTasktime()) < 0) {
- // 被锁,正在执行操作
- return null;
- } else {
- lock.setTaskstatus(1);
- lock.setTasktime(hostdatetime);
- taskLockDao.save(lock);
- return lock;
- }
- } else {
- lock = new TTaskLock();
- lock.setTaskcode(taskcode);
- lock.setTaskstatus(1);
- lock.setTasktime(hostdatetime);
- lock.setRemark(remark);
- taskLockDao.save(lock);
- }
- return lock;
- }
-
- @Override
public String getAccdate() {
String hostdate = getSysdatetime().getHostdate();
TSettlectl settlectl = settleCtlDao.getOne(1);
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
index 7d93474..7f7ea81 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
@@ -8,7 +8,6 @@
import com.supwisdom.dlpay.api.service.ConsumePayService
import com.supwisdom.dlpay.api.service.DtlQueryResultService
import com.supwisdom.dlpay.api.service.TransactionServiceProxy
-import com.supwisdom.dlpay.framework.domain.TTaskLock
import com.supwisdom.dlpay.framework.service.SystemUtilService
import com.supwisdom.dlpay.framework.util.ApplicationUtil
import com.supwisdom.dlpay.framework.util.TradeDict