From bd338dd9341a3473a2a504d55c00796dd7b98f5a Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期三, 31 八月 2022 19:19:31 +0800 Subject: [PATCH] update 重构 QueueUtils 抽取通用方法 统一使用 适配优先队列新用法 --- /dev/null | 16 ----- ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java | 79 ++++---------------------- ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java | 6 +- ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java | 15 +--- ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java | 8 ++ pom.xml | 2 6 files changed, 27 insertions(+), 99 deletions(-) diff --git a/pom.xml b/pom.xml index 9fb54fb..6933b99 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ <hutool.version>5.8.5</hutool.version> <okhttp.version>4.10.0</okhttp.version> <spring-boot-admin.version>2.7.4</spring-boot-admin.version> - <redisson.version>3.17.5</redisson.version> + <redisson.version>3.17.6</redisson.version> <lock4j.version>2.2.2</lock4j.version> <dynamic-ds.version>3.5.1</dynamic-ds.version> <tlog.version>1.4.3</tlog.version> diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java index acfc021..b8fa308 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java @@ -42,7 +42,7 @@ } /** - * 鑾峰彇涓�涓櫘閫氶槦鍒楁暟鎹� 娌℃湁鏁版嵁杩斿洖 null + * 閫氱敤鑾峰彇涓�涓槦鍒楁暟鎹� 娌℃湁鏁版嵁杩斿洖 null(涓嶆敮鎸佸欢杩熼槦鍒�) * * @param queueName 闃熷垪鍚� */ @@ -52,11 +52,19 @@ } /** - * 鍒犻櫎鏅�氶槦鍒楁暟鎹� + * 閫氱敤鍒犻櫎闃熷垪鏁版嵁(涓嶆敮鎸佸欢杩熼槦鍒�) */ public static <T> boolean removeQueueObject(String queueName, T data) { RBlockingQueue<T> queue = CLIENT.getBlockingQueue(queueName); return queue.remove(data); + } + + /** + * 閫氱敤閿�姣侀槦鍒� 鎵�鏈夐樆濉炵洃鍚� 鎶ラ敊(涓嶆敮鎸佸欢杩熼槦鍒�) + */ + public static <T> boolean destroyQueue(String queueName) { + RBlockingQueue<T> queue = CLIENT.getBlockingQueue(queueName); + return queue.delete(); } /** @@ -118,23 +126,12 @@ * * @param queueName 闃熷垪鍚� * @param comparator 姣旇緝鍣� - */ - public static <T> boolean trySetPriorityQueueComparator(String queueName, Comparator<T> comparator) { - RPriorityBlockingQueue<T> priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName); - return priorityBlockingQueue.trySetComparator(comparator); - } - - /** - * 灏濊瘯璁剧疆 浼樺厛闃熷垪姣旇緝鍣� 鐢ㄤ簬鎺掑簭浼樺厛绾� - * - * @param queueName 闃熷垪鍚� - * @param comparator 姣旇緝鍣� * @param destroy 宸插瓨鍦ㄦ槸鍚﹂攢姣� */ public static <T> boolean trySetPriorityQueueComparator(String queueName, Comparator<T> comparator, boolean destroy) { RPriorityBlockingQueue<T> priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName); if (priorityBlockingQueue.isExists() && destroy) { - destroyPriorityQueueObject(queueName); + destroyQueue(queueName); } return priorityBlockingQueue.trySetComparator(comparator); } @@ -148,32 +145,6 @@ public static <T> boolean addPriorityQueueObject(String queueName, T data) { RPriorityBlockingQueue<T> priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName); return priorityBlockingQueue.offer(data); - } - - /** - * 鑾峰彇涓�涓紭鍏堥槦鍒楁暟鎹� 娌℃湁鏁版嵁杩斿洖 null - * - * @param queueName 闃熷垪鍚� - */ - public static <T> T getPriorityQueueObject(String queueName) { - RPriorityBlockingQueue<T> priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName); - return priorityBlockingQueue.poll(); - } - - /** - * 鍒犻櫎浼樺厛闃熷垪鏁版嵁 - */ - public static <T> boolean removePriorityQueueObject(String queueName, T data) { - RPriorityBlockingQueue<T> priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName); - return priorityBlockingQueue.remove(data); - } - - /** - * 閿�姣佷紭鍏堥槦鍒� - */ - public static boolean destroyPriorityQueueObject(String queueName) { - RPriorityBlockingQueue<?> priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName); - return priorityBlockingQueue.delete(); } /** @@ -197,7 +168,7 @@ public static <T> boolean trySetBoundedQueueCapacity(String queueName, int capacity, boolean destroy) { RBoundedBlockingQueue<T> boundedBlockingQueue = CLIENT.getBoundedBlockingQueue(queueName); if (boundedBlockingQueue.isExists() && destroy) { - destroyBoundedQueueObject(queueName); + destroyQueue(queueName); } return boundedBlockingQueue.trySetCapacity(capacity); } @@ -212,32 +183,6 @@ public static <T> boolean addBoundedQueueObject(String queueName, T data) { RBoundedBlockingQueue<T> boundedBlockingQueue = CLIENT.getBoundedBlockingQueue(queueName); return boundedBlockingQueue.offer(data); - } - - /** - * 鑾峰彇涓�涓湁鐣岄槦鍒楁暟鎹� 娌℃湁鏁版嵁杩斿洖 null - * - * @param queueName 闃熷垪鍚� - */ - public static <T> T getBoundedQueueObject(String queueName) { - RBoundedBlockingQueue<T> boundedBlockingQueue = CLIENT.getBoundedBlockingQueue(queueName); - return boundedBlockingQueue.poll(); - } - - /** - * 鍒犻櫎鏈夌晫闃熷垪鏁版嵁 - */ - public static <T> boolean removeBoundedQueueObject(String queueName, T data) { - RBoundedBlockingQueue<T> boundedBlockingQueue = CLIENT.getBoundedBlockingQueue(queueName); - return boundedBlockingQueue.remove(data); - } - - /** - * 閿�姣佹湁鐣岄槦鍒� - */ - public static boolean destroyBoundedQueueObject(String queueName) { - RBoundedBlockingQueue<?> boundedBlockingQueue = CLIENT.getBoundedBlockingQueue(queueName); - return boundedBlockingQueue.delete(); } /** diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java index 50c361b..968a419 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java @@ -35,7 +35,7 @@ @GetMapping("/add") public R<Void> add(String queueName, int capacity) { // 鐢ㄥ畬浜嗕竴瀹氳閿�姣� 鍚﹀垯浼氫竴鐩村瓨鍦� - boolean b = QueueUtils.destroyBoundedQueueObject(queueName); + boolean b = QueueUtils.destroyQueue(queueName); log.info("閫氶亾: {} , 鍒犻櫎: {}", queueName, b); // 鍒濆鍖栬缃竴娆″嵆鍙� if (QueueUtils.trySetBoundedQueueCapacity(queueName, capacity)) { @@ -64,7 +64,7 @@ @GetMapping("/remove") public R<Void> remove(String queueName) { String data = "data-" + 5; - if (QueueUtils.removeBoundedQueueObject(queueName, data)) { + if (QueueUtils.removeQueueObject(queueName, data)) { log.info("閫氶亾: {} , 鍒犻櫎鏁版嵁: {}", queueName, data); } else { return R.fail("鎿嶄綔澶辫触"); @@ -81,7 +81,7 @@ public R<Void> get(String queueName) { String data; do { - data = QueueUtils.getBoundedQueueObject(queueName); + data = QueueUtils.getQueueObject(queueName); log.info("閫氶亾: {} , 鑾峰彇鏁版嵁: {}", queueName, data); } while (data != null); return R.ok("鎿嶄綔鎴愬姛"); diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java index 80f1b11..320a640 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java @@ -2,6 +2,7 @@ import lombok.Data; import lombok.NoArgsConstructor; +import org.jetbrains.annotations.NotNull; /** * 瀹炰綋绫� 娉ㄦ剰涓嶅厑璁镐娇鐢ㄥ唴閮ㄧ被 鍚﹀垯浼氭壘涓嶅埌绫� @@ -11,7 +12,12 @@ */ @Data @NoArgsConstructor -public class PriorityDemo { +public class PriorityDemo implements Comparable<PriorityDemo> { private String name; private Integer orderNum; + + @Override + public int compareTo(@NotNull PriorityDemo other) { + return Integer.compare(getOrderNum(), other.getOrderNum()); + } } diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemoComparator.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemoComparator.java deleted file mode 100644 index f72e695..0000000 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemoComparator.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ruoyi.demo.controller.queue; - -import java.util.Comparator; - -/** - * 姣旇緝鍣� 娉ㄦ剰涓嶅厑璁镐娇鐢� 鍐呴儴绫绘垨鍖垮悕绫绘垨lambda琛ㄨ揪寮� 浼氭壘涓嶅埌绫� - * - * @author Lion Li - * @version 3.6.0 - */ -public class PriorityDemoComparator implements Comparator<PriorityDemo> { - @Override - public int compare(PriorityDemo pd1, PriorityDemo pd2) { - return Integer.compare(pd1.getOrderNum(), pd2.getOrderNum()); - } -} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java index ba6c340..4a60232 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java @@ -34,16 +34,9 @@ @GetMapping("/add") public R<Void> add(String queueName) { // 鐢ㄥ畬浜嗕竴瀹氳閿�姣� 鍚﹀垯浼氫竴鐩村瓨鍦� - boolean b = QueueUtils.destroyPriorityQueueObject(queueName); + boolean b = QueueUtils.destroyQueue(queueName); log.info("閫氶亾: {} , 鍒犻櫎: {}", queueName, b); - // 鍒濆鍖栬缃竴娆″嵆鍙� 姝ゅ娉ㄦ剰 涓嶅厑璁哥敤鍐呴儴绫绘垨鍖垮悕绫� - boolean flag = QueueUtils.trySetPriorityQueueComparator(queueName, new PriorityDemoComparator()); - if (flag) { - log.info("閫氶亾: {} , 璁剧疆姣旇緝鍣ㄦ垚鍔�", queueName); - } else { - log.info("閫氶亾: {} , 璁剧疆姣旇緝鍣ㄥけ璐�", queueName); - return R.fail("鎿嶄綔澶辫触"); - } + for (int i = 0; i < 10; i++) { int randomNum = RandomUtil.randomInt(10); PriorityDemo data = new PriorityDemo(); @@ -70,7 +63,7 @@ PriorityDemo data = new PriorityDemo(); data.setName(name); data.setOrderNum(orderNum); - if (QueueUtils.removePriorityQueueObject(queueName, data)) { + if (QueueUtils.removeQueueObject(queueName, data)) { log.info("閫氶亾: {} , 鍒犻櫎鏁版嵁: {}", queueName, data); } else { return R.fail("鎿嶄綔澶辫触"); @@ -87,7 +80,7 @@ public R<Void> get(String queueName) { PriorityDemo data; do { - data = QueueUtils.getPriorityQueueObject(queueName); + data = QueueUtils.getQueueObject(queueName); log.info("閫氶亾: {} , 鑾峰彇鏁版嵁: {}", queueName, data); } while (data != null); return R.ok("鎿嶄綔鎴愬姛"); -- Gitblit v1.9.3