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