From 5ca038d888922e93bf45c7bd37f3c6dce849dcff Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 24 十二月 2021 11:36:02 +0800 Subject: [PATCH] update 调整监控依赖 从 common 迁移到 framework --- ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java | 75 +++++++++++++++++++++++++++++-------- 1 files changed, 58 insertions(+), 17 deletions(-) diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java index 7792784..94ad3c3 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java @@ -1,10 +1,19 @@ package com.ruoyi.demo.controller; -import com.ruoyi.common.annotation.RedisLock; +import com.baomidou.lock.LockInfo; +import com.baomidou.lock.LockTemplate; +import com.baomidou.lock.annotation.Lock4j; +import com.baomidou.lock.executor.RedissonLockExecutor; import com.ruoyi.common.core.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalTime; /** @@ -12,24 +21,56 @@ * * @author shenxinquan */ +@Api(value = "娴嬭瘯鍒嗗竷寮忛攣鐨勬牱渚�", tags = {"娴嬭瘯鍒嗗竷寮忛攣鐨勬牱渚�"}) +@Slf4j @RestController @RequestMapping("/demo/redisLock") public class RedisLockController { - /** - * #p0 鏍囪瘑鍙栫涓�涓弬鏁颁负redis閿佺殑key - */ - @GetMapping("/getLock") - @RedisLock(expireTime = 10, key = "#p0") - public AjaxResult<String> getLock(String key, String value) { - try { - // 鍚屾椂璇锋眰鎺掗槦 -// Thread.sleep(5000); - // 閿佽秴鏃舵祴璇� - Thread.sleep(11000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - return AjaxResult.success("鎿嶄綔鎴愬姛",value); - } + @Autowired + private LockTemplate lockTemplate; + + /** + * 娴嬭瘯lock4j 娉ㄨВ + */ + @ApiOperation("娴嬭瘯lock4j 娉ㄨВ") + @Lock4j(keys = {"#key"}) + @GetMapping("/testLock4j") + public AjaxResult<String> testLock4j(String key, String value) { + System.out.println("start:" + key + ",time:" + LocalTime.now().toString()); + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("end :" + key + ",time:" + LocalTime.now().toString()); + return AjaxResult.success("鎿嶄綔鎴愬姛", value); + } + + /** + * 娴嬭瘯lock4j 宸ュ叿 + */ + @ApiOperation("娴嬭瘯lock4j 宸ュ叿") + @GetMapping("/testLock4jLockTemaplate") + public AjaxResult<String> testLock4jLockTemaplate(String key, String value) { + final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class); + if (null == lockInfo) { + throw new RuntimeException("涓氬姟澶勭悊涓�,璇风◢鍚庡啀璇�"); + } + // 鑾峰彇閿佹垚鍔燂紝澶勭悊涓氬姟 + try { + try { + Thread.sleep(8000); + } catch (InterruptedException e) { + // + } + System.out.println("鎵ц绠�鍗曟柟娉�1 , 褰撳墠绾跨▼:" + Thread.currentThread().getName()); + } finally { + //閲婃斁閿� + lockTemplate.releaseLock(lockInfo); + } + //缁撴潫 + return AjaxResult.success("鎿嶄綔鎴愬姛", value); + } + } -- Gitblit v1.9.3