From 82f1f5d0cf1b51a5d81915e842e01760f404fa74 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期三, 20 十月 2021 13:07:16 +0800 Subject: [PATCH] update 优化xxl-job-admin相关pr代码 增加格式化日志输出与docker镜像 --- ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java | 77 ++++++++++++++++++++++++-------------- 1 files changed, 49 insertions(+), 28 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 e80e3d6..a720246 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,15 +1,20 @@ 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 com.ruoyi.common.core.redis.RedisLockManager; +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.cache.annotation.Cacheable; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.concurrent.TimeUnit; +import java.time.LocalTime; /** @@ -17,49 +22,65 @@ * * @author shenxinquan */ +@Api(value = "娴嬭瘯鍒嗗竷寮忛攣鐨勬牱渚�", tags = {"娴嬭瘯鍒嗗竷寮忛攣鐨勬牱渚�"}) @Slf4j @RestController @RequestMapping("/demo/redisLock") public class RedisLockController { @Autowired - private RedisLockManager redisLockManager; + private LockTemplate lockTemplate; /** - * #p0 鏍囪瘑鍙栫涓�涓弬鏁颁负redis閿佺殑key + * 娴嬭瘯lock4j 娉ㄨВ */ - @GetMapping("/testLock1") - @RedisLock(expireTime = 10, key = "#p0") - public AjaxResult<String> testLock1(String key, String value) { + @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(5000); - // 閿佽秴鏃舵祴璇� - Thread.sleep(11000); + Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } + System.out.println("end :"+key+",time:"+LocalTime.now().toString()); return AjaxResult.success("鎿嶄綔鎴愬姛",value); } /** - * 娴嬭瘯閿佸伐鍏风被 + * 娴嬭瘯lock4j 宸ュ叿 */ - @GetMapping("/testLock2") - public AjaxResult<Void> testLock(String key, Long time) { - try { - boolean flag = redisLockManager.getLock(key, time, TimeUnit.SECONDS); - if (flag) { - log.info("鑾峰彇閿佹垚鍔�: " + key); - Thread.sleep(3000); - redisLockManager.unLock(key); - log.info("閲婃斁閿佹垚鍔�: " + key); - } else { - log.error("鑾峰彇閿佸け璐�: " + key); - } - } catch (InterruptedException e) { - log.error(e.getMessage()); + @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("涓氬姟澶勭悊涓�,璇风◢鍚庡啀璇�"); } - return AjaxResult.success(); + // 鑾峰彇閿佹垚鍔燂紝澶勭悊涓氬姟 + try { + try { + Thread.sleep(8000); + } catch (InterruptedException e) { + // + } + System.out.println("鎵ц绠�鍗曟柟娉�1 , 褰撳墠绾跨▼:" + Thread.currentThread().getName()); + } finally { + //閲婃斁閿� + lockTemplate.releaseLock(lockInfo); + } + //缁撴潫 + return AjaxResult.success("鎿嶄綔鎴愬姛",value); + } + + /** + * 娴嬭瘯spring-cache娉ㄨВ + */ + @ApiOperation("娴嬭瘯spring-cache娉ㄨВ") + @Cacheable(value = "test", key = "#key") + @GetMapping("/testCache") + public AjaxResult<String> testCache(String key) { + return AjaxResult.success("鎿嶄綔鎴愬姛", key); } } -- Gitblit v1.9.3