Quartz:Quartz添加事務回滾報錯


自動任務類:

@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class ReCodeBack implements Job {

    private static final Logger LOGGER = LoggerFactory.getLogger(ReCodeBack.class);

    @Autowired
    ReCodeBackTag reCodeBackTag;

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        reCodeBackTag.backupsReCode();
    }


}

自動任務注解:

@PersistJobDataAfterExecution

@DisallowConcurrentExecution

 

任務需求是需要添加事務

運用spring注解@Transactional注解

    /**
     * 添加(刪除)表數據
     * @param object
     * @param modular
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public int tableOperation (Object object,String modular){
    int count = 0;
    try{
        .......
    }catch (Exception e) {
            LOGGER.info("[添加(刪除)表數據] ERROR :{}", e.getMessage());
            //事務回滾
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            //任務異常中斷,立即重新運行
            JobExecutionException e2 = new JobExecutionException(e);
            e2.setRefireImmediately(true);
            throw e2;
        }finally {
            return count;
        }
    }

 

注意:當作者在自動任務類進行使用@Transactional注解時,程序會進行報錯(太懶……原因沒搞清楚,后續會補上),所以作者分成了兩個類來編寫的,一個定時調用類,一個業務類,如上代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM