From bd338dd9341a3473a2a504d55c00796dd7b98f5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?=
<15040126243@163.com>
Date: Wed, 31 Aug 2022 19:19:31 +0800
Subject: [PATCH] =?UTF-8?q?update=20=E9=87=8D=E6=9E=84=20QueueUtils=20?=
=?UTF-8?q?=E6=8A=BD=E5=8F=96=E9=80=9A=E7=94=A8=E6=96=B9=E6=B3=95=20?=
=?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8=20=E9=80=82=E9=85=8D?=
=?UTF-8?q?=E4=BC=98=E5=85=88=E9=98=9F=E5=88=97=E6=96=B0=E7=94=A8=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../ruoyi/common/utils/redis/QueueUtils.java | 79 +++----------------
.../queue/BoundedQueueController.java | 6 +-
.../demo/controller/queue/PriorityDemo.java | 8 +-
.../queue/PriorityDemoComparator.java | 16 ----
.../queue/PriorityQueueController.java | 15 +---
6 files changed, 27 insertions(+), 99 deletions(-)
delete mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemoComparator.java
diff --git a/pom.xml b/pom.xml
index 9fb54fb6c..6933b9946 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
5.8.5
4.10.0
2.7.4
- 3.17.5
+ 3.17.6
2.2.2
3.5.1
1.4.3
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 acfc021fe..b8fa30804 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 @@ public class QueueUtils {
}
/**
- * 获取一个普通队列数据 没有数据返回 null
+ * 通用获取一个队列数据 没有数据返回 null(不支持延迟队列)
*
* @param queueName 队列名
*/
@@ -52,13 +52,21 @@ public class QueueUtils {
}
/**
- * 删除普通队列数据
+ * 通用删除队列数据(不支持延迟队列)
*/
public static boolean removeQueueObject(String queueName, T data) {
RBlockingQueue queue = CLIENT.getBlockingQueue(queueName);
return queue.remove(data);
}
+ /**
+ * 通用销毁队列 所有阻塞监听 报错(不支持延迟队列)
+ */
+ public static boolean destroyQueue(String queueName) {
+ RBlockingQueue queue = CLIENT.getBlockingQueue(queueName);
+ return queue.delete();
+ }
+
/**
* 添加延迟队列数据 默认毫秒
*
@@ -113,17 +121,6 @@ public class QueueUtils {
delayedQueue.destroy();
}
- /**
- * 尝试设置 优先队列比较器 用于排序优先级
- *
- * @param queueName 队列名
- * @param comparator 比较器
- */
- public static boolean trySetPriorityQueueComparator(String queueName, Comparator comparator) {
- RPriorityBlockingQueue priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName);
- return priorityBlockingQueue.trySetComparator(comparator);
- }
-
/**
* 尝试设置 优先队列比较器 用于排序优先级
*
@@ -134,7 +131,7 @@ public class QueueUtils {
public static boolean trySetPriorityQueueComparator(String queueName, Comparator comparator, boolean destroy) {
RPriorityBlockingQueue priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName);
if (priorityBlockingQueue.isExists() && destroy) {
- destroyPriorityQueueObject(queueName);
+ destroyQueue(queueName);
}
return priorityBlockingQueue.trySetComparator(comparator);
}
@@ -150,32 +147,6 @@ public class QueueUtils {
return priorityBlockingQueue.offer(data);
}
- /**
- * 获取一个优先队列数据 没有数据返回 null
- *
- * @param queueName 队列名
- */
- public static T getPriorityQueueObject(String queueName) {
- RPriorityBlockingQueue priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName);
- return priorityBlockingQueue.poll();
- }
-
- /**
- * 删除优先队列数据
- */
- public static boolean removePriorityQueueObject(String queueName, T data) {
- RPriorityBlockingQueue 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 class QueueUtils {
public static boolean trySetBoundedQueueCapacity(String queueName, int capacity, boolean destroy) {
RBoundedBlockingQueue boundedBlockingQueue = CLIENT.getBoundedBlockingQueue(queueName);
if (boundedBlockingQueue.isExists() && destroy) {
- destroyBoundedQueueObject(queueName);
+ destroyQueue(queueName);
}
return boundedBlockingQueue.trySetCapacity(capacity);
}
@@ -214,32 +185,6 @@ public class QueueUtils {
return boundedBlockingQueue.offer(data);
}
- /**
- * 获取一个有界队列数据 没有数据返回 null
- *
- * @param queueName 队列名
- */
- public static T getBoundedQueueObject(String queueName) {
- RBoundedBlockingQueue boundedBlockingQueue = CLIENT.getBoundedBlockingQueue(queueName);
- return boundedBlockingQueue.poll();
- }
-
- /**
- * 删除有界队列数据
- */
- public static boolean removeBoundedQueueObject(String queueName, T data) {
- RBoundedBlockingQueue 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 50c361b1c..968a4193f 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 @@ public class BoundedQueueController {
@GetMapping("/add")
public R 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 @@ public class BoundedQueueController {
@GetMapping("/remove")
public R 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 class BoundedQueueController {
public R 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 80f1b1155..320a640da 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 @@ package com.ruoyi.demo.controller.queue;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.jetbrains.annotations.NotNull;
/**
* 实体类 注意不允许使用内部类 否则会找不到类
@@ -11,7 +12,12 @@ import lombok.NoArgsConstructor;
*/
@Data
@NoArgsConstructor
-public class PriorityDemo {
+public class PriorityDemo implements Comparable {
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 f72e6950d..000000000
--- 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 {
- @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 ba6c340b6..4a60232c7 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 @@ public class PriorityQueueController {
@GetMapping("/add")
public R 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 @@ public class PriorityQueueController {
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 class PriorityQueueController {
public R get(String queueName) {
PriorityDemo data;
do {
- data = QueueUtils.getPriorityQueueObject(queueName);
+ data = QueueUtils.getQueueObject(queueName);
log.info("通道: {} , 获取数据: {}", queueName, data);
} while (data != null);
return R.ok("操作成功");