| | |
| | | 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.domain.R; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | @ApiOperation("测试lock4j 注解") |
| | | @Lock4j(keys = {"#key"}) |
| | | @GetMapping("/testLock4j") |
| | | public AjaxResult<String> testLock4j(String key, String value) { |
| | | public R<String> testLock4j(String key, String value) { |
| | | System.out.println("start:" + key + ",time:" + LocalTime.now().toString()); |
| | | try { |
| | | Thread.sleep(10000); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | System.out.println("end :" + key + ",time:" + LocalTime.now().toString()); |
| | | return AjaxResult.success("操作成功", value); |
| | | return R.ok("操作成功", value); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @ApiOperation("测试lock4j 工具") |
| | | @GetMapping("/testLock4jLockTemplate") |
| | | public AjaxResult<String> testLock4jLockTemplate(String key, String value) { |
| | | public R<String> testLock4jLockTemplate(String key, String value) { |
| | | final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class); |
| | | if (null == lockInfo) { |
| | | throw new RuntimeException("业务处理中,请稍后再试"); |
| | |
| | | lockTemplate.releaseLock(lockInfo); |
| | | } |
| | | //结束 |
| | | return AjaxResult.success("操作成功", value); |
| | | return R.ok("操作成功", value); |
| | | } |
| | | |
| | | } |