博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Redisson分布式事务锁
阅读量:6415 次
发布时间:2019-06-23

本文共 2437 字,大约阅读时间需要 8 分钟。

Redisson配置类

/** * @author hwq * @date 2019/05/02 * 

* RedissonManager类 *

*/@Slf4j@Componentpublic class RedissonManager { private Config config = new Config(); private Redisson redisson = null;public Redisson getRedisson() { return redisson;}private static String redis1Ip = PropertiesUtil.getProperty("redis1.ip");private static Integer redis1Port = Integer.parseInt(PropertiesUtil.getProperty("redis1.port"));private static String redis2Ip = PropertiesUtil.getProperty("redis2.ip");private static Integer redis2Port = Integer.parseInt(PropertiesUtil.getProperty("redis2.port"));@PostConstructprivate void init() { try { config.useSingleServer().setAddress(new StringBuilder().append(redis1Ip).append(":").append(redis1Port).toString()); redisson = (Redisson) Redisson.create(config); log.info("初始化Redisson结束"); } catch (Exception e) { log.error("redisson init error", e); }}}复制代码

properties文件中的配置

redis.ip1=127.0.0.1    redis.port1=6379    redis.ip2=127.0.0.1    redis.port2=6380复制代码

Pom.xml文件中需要引入的

org.redisson
redisson
2.9.0
com.fasterxml.jackson.dataformat
jackson-dataformat-avro
2.9.0
复制代码

代码实现:

@Scheduled(cron = "0 */1 * * * ?")//每一分钟执行一次    public void closeOrderTaskV4() {        log.info("关闭订单任务开启");        RLock lock = redissonManager.getRedisson().getLock(Const.REDIS_LOCK.CLOSE_ORDER_TASK_LOCK);        boolean getLock = false;        try {            if (getLock = lock.tryLock(0, 50, TimeUnit.SECONDS)) {                log.info("Redisson获取到分布式锁:{},ThreadName:{}", Const.REDIS_LOCK.CLOSE_ORDER_TASK_LOCK, Thread.currentThread().getName());                int hour = Integer.parseInt(PropertiesUtil.getProperty("close.order.task.time.hour", "2"));//                iOrderService.closeOrder(hour);            } else {                log.info("Redisson没有获取到分布式锁:{},ThreadName:{}", Const.REDIS_LOCK.CLOSE_ORDER_TASK_LOCK, Thread.currentThread().getName());            }        } catch (InterruptedException e) {            log.error("Redisson分布式锁获取异常", e);        } finally {            if (!getLock) {                return;            }            lock.unlock();            log.info("Redisson分布式锁释放锁");        }        log.info("关闭订单任务结束");    }复制代码

转载于:https://juejin.im/post/5cdbc3c55188256956222a89

你可能感兴趣的文章
Laravel之认证服务
查看>>
性能测试总结(三)--工具选型篇
查看>>
免费好用的 Apple 工具(Windows 适用)
查看>>
水利行业传感器
查看>>
服务器做网页的搭建
查看>>
linux上部署ant
查看>>
arc073 F many moves(dp + 线段树)
查看>>
HT For Web 拓扑图背景设置
查看>>
长理 校赛的 一个贪心题
查看>>
vuecli3初尝试(转载)
查看>>
学习笔记:索引碎片、计划缓存、统计信息
查看>>
TSQL技巧(一) -- 子查询(subquery)
查看>>
espcms简约版的表单,提示页,搜索列表页
查看>>
KindEditor
查看>>
航拍去浆
查看>>
Linux-shell 练习题(一)
查看>>
12.01个人计划
查看>>
Dynamics CRM ISV文件夹禁用后的解决方案
查看>>
ASP.NET中IsPostBack详解
查看>>
Apple开启双重认证过程
查看>>