记一次多容器部署job 并使用redission实现不重复执行任务

本文探讨如何在多容器部署环境下,利用Redisson作为分布式锁避免子计算任务的重复执行。通过设置业务key和分布式锁key,确保任务执行的唯一性。当获取到分布式锁RLock后,才能进行业务操作,否则将被阻止,从而实现任务的不重复执行。
摘要由CSDN通过智能技术生成

上一篇文章解决了 多容器部署job服务不重复执行的问题,本篇进一步解决任务中的子计算任务在多容器部署时重复执行的问题。

业务key是”index_job_“+code+yyyyMMdd

分布式锁是”index_job_“+code

这2个key是不同的东西,这个是一个容易混淆的点,不要把业务的key当成锁的key,

redisson中分布式锁的key是 ”index_job_“+code+UUID+threadID

分布式锁的key相当一个门,

获得锁RLock rLock=redisBusiness.getRLock("",doorKey);//解决竞争分布式锁

拿到锁

Boolean flag= rLock.tryLock(10,6000, TimeUnit.MILLISECONDS);//拿到锁

返回true相当于你可以打开门,就可以操作业务的key了

返回false相当于在有2个机器并且同时走这段代码的时候第一个机器拿到钥匙开门了,第二个机器就拿不到钥匙了去开门了。

redis客户端使用RedissonClient 

/**
     * 分布式锁任务
     * 
     * @param companyCode
     * @param years
     * @param voList
     */
    private void computeValue(String companyCode,Integer years,List<IndexCustVO> voList){
        log.info(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值