Springboot项目定时任务同步第三方数据给开发、测试、和生产环境共同使用导致数据重复同步。

Springboot项目定时任务同步第三方数据给开发、测试、和生产环境共同使用。 由于这个定时任务在开发环境、测试环境和生产环境都存在,会出现数据重复同步的情况,怎么处理。

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。

如:spring.profiles.active=dev就会加载application-dev.properties配置文件内容

第一步:

我们只需要在不同开发环境中的properties中增加一个标志即可,
比如增加一个dutyTaskFlag,值取“1”时,表示执行该定时任务,值取“0”时表示不执行该定时任务。

application-dev.properties:

#同步排班定时任务执行标志
task.dutyTaskFlag=0
#同步点位信息定时任务标志
task.locationTaskFlag=0

application-test.properties:

#同步排班定时任务执行标志
task.dutyTaskFlag=0
#同步点位信息定时任务标志
task.locationTaskFlag=0

application-prod.properties:

#同步排班定时任务执行标志
task.dutyTaskFlag=1
#同步点位信息定时任务标志
task.locationTaskFlag=1

第二步:

自定义一个类ConfigBeanValue 接收该配置项的值。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
@Component
public class ConfigBeanValue {
 
    @Value("${task.dutyTaskFlag}")
    public String dutyTaskFlag;
 
    @Value("${task.locationTaskFlag}")
    public String locationTaskFlag;
}

第三步:

在定时任务中,使用该标志进行逻辑控制。


@Slf4j
@Component
@EnableScheduling
public class SyncDutyTask{
 
    @Autowired
    private ConfigBeanValue configBeanValue;
 
    /**
    *每天零点10分执行一次
    */
    @Scheduled(cron="0 10 0 * * ?")
    public void syncDuty() {
       if(null != configBeanValue){
       		System.out.println("dsDutyTaskFlag="+configBeanValue.dutyTaskFlag);
       		System.out.println("dsDutyTaskFlag="+configBeanValue.locationTaskFlag);
       		if("1".equals(configBeanValue.dutyTaskFlag)){
       			//ToDo同步
       		}
       }
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值