|
- package com.example.webapi.service;
-
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.CommandLineRunner;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import org.springframework.stereotype.Service;
-
- @Component
- @Slf4j
- @RequiredArgsConstructor
- public class ScheduledSyncService implements CommandLineRunner {
-
- private static final Logger logger = LoggerFactory.getLogger(ScheduledSyncService.class);
-
- @Autowired
- private DataSyncService dataSyncService;
-
- /**
- * 每5分钟执行一次增量同步
- */
- @Scheduled(fixedRate = 300000) // 5分钟 = 300000毫秒
- public void syncIncrementalData() {
- try {
- logger.info("开始定时增量同步数据...");
- int count = dataSyncService.syncIncrementalData();
- logger.info("定时增量同步完成,成功同步 {} 条记录", count);
- } catch (Exception e) {
- logger.error("定时增量同步过程中发生错误: {}", e.getMessage(), e);
- }
- }
-
- /**
- * 每天凌晨2点执行全量同步检查
- */
- @Scheduled(cron = "0 0 2 * * ?")
- public void dailyFullSync() {
- try {
- logger.info("开始每日全量同步检查...");
- int count = dataSyncService.syncIncrementalData();
- logger.info("每日全量同步检查完成,成功同步 {} 条记录", count);
- } catch (Exception e) {
- logger.error("每日全量同步检查过程中发生错误: {}", e.getMessage(), e);
- }
- }
-
- @Override
- public void run(String... args) throws Exception {
- System.out.println("项目启动后执行增量同步------------------");
- try {
- syncIncrementalData();
- } catch (Exception e) {
- logger.error("启动时增量同步失败: {}", e.getMessage(), e);
- }
- }
- }
|