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