优化
This commit is contained in:
@@ -15,6 +15,8 @@ import jakarta.annotation.Resource;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.transaction.support.TransactionSynchronization;
|
||||||
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -56,8 +58,15 @@ public class BenchmarkTaskServiceImpl implements BenchmarkTaskService {
|
|||||||
|
|
||||||
log.info("[createTask][userId={}, taskId={}] 创建对标分析任务成功", userId, taskId);
|
log.info("[createTask][userId={}, taskId={}] 创建对标分析任务成功", userId, taskId);
|
||||||
|
|
||||||
// 2. 异步执行任务
|
// 2. 事务提交后再触发异步任务,避免异步线程读不到未提交的数据
|
||||||
benchmarkTaskExecutor.executeAsync(taskId, createReqVO);
|
Long finalTaskId = taskId;
|
||||||
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
||||||
|
@Override
|
||||||
|
public void afterCommit() {
|
||||||
|
log.info("[createTask][taskId={}] 事务已提交,触发异步执行", finalTaskId);
|
||||||
|
benchmarkTaskExecutor.executeAsync(finalTaskId, createReqVO);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return taskId;
|
return taskId;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user