方法一.配置文件
1.在application-jdbc.yml 配置一个标识 例如:dingshizhixing=1(0不执行 1.执行)
2.在定时文件里引入:
@Value("${dingshirenwu}") private String dingshirenwu;
执行定时方法加判断
if(dingshirenwu==1){
执行方法体
}
方法二.利用redis来操作存出端口号(同一台服务器)或IP(不同服务器),来操作当前那个服务执行定时。
方法三.利用redis的分布式锁(一个服务挂了,另一个服务可以顶替上):
引入JedisPool,调用Jedis的锁方法(setnx()),如果上锁成功则处理要实现的逻辑,如果上锁失败则不处理。特别注意 失效时间定量大于处理时间(具体根据业务情况而定)
Jedis jedis1=JedisPool.getResource(); long expires = System.currentTimeMillis() + 10000 + 1; String expiresStr = String.valueOf(expires); // 锁到期时间 Long lo=jedis1.setnx("lockKey",expiresStr); System.out.println(lo+"開始執行——————————————————————————————————"); if (lo == 1) { // 获取锁成功 //失效时间 jedis1.expire("lockKey",15); System.out.println(jedis1.get("lockKey")+"開始執行——————————————————————"); Thread.sleep(10000); System.out.println("執行結束————————————————————————————————————————"); //删除锁 jedis1.del("lockKey"); }