集群Spring定时只执行一次

方法一.配置文件

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");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值