From 6d63798ccfbcf7bcb6852c0bcb04045f2c3d4bbe Mon Sep 17 00:00:00 2001 From: redkale Date: Mon, 16 Oct 2023 15:02:20 +0800 Subject: [PATCH] isVirtualWorkExecutor --- src/main/java/org/redkale/boot/Application.java | 5 +++++ src/main/java/org/redkale/mq/MessageAgent.java | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index 2176b4042..692de8771 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -2684,6 +2684,11 @@ public final class Application { return workExecutor; } + public boolean isVirtualWorkExecutor() { + //JDK21+ + return workExecutor != null && workExecutor.getClass().getSimpleName().contains("ThreadPerTaskExecutor"); + } + public AsyncGroup getClientAsyncGroup() { return clientAsyncGroup; } diff --git a/src/main/java/org/redkale/mq/MessageAgent.java b/src/main/java/org/redkale/mq/MessageAgent.java index e773305e5..5945aee34 100644 --- a/src/main/java/org/redkale/mq/MessageAgent.java +++ b/src/main/java/org/redkale/mq/MessageAgent.java @@ -102,13 +102,14 @@ public abstract class MessageAgent implements Resourcable { this.name = checkName(config.getValue("name", "")); this.httpAppRespTopic = generateHttpAppRespTopic(); this.sncpAppRespTopic = generateSncpAppRespTopic(); - int threads = config.getIntValue("threads", -1); + int threads = config.getIntValue("threads", application.isVirtualWorkExecutor() ? 0 : -1); if (threads == 0) { this.workExecutor = application.getWorkExecutor(); } if (this.workExecutor == null) { - this.workExecutor = threads > 0 ? WorkThread.createExecutor(threads, "Redkale-MessageConsumerThread-[" + name + "]-%s") - : WorkThread.createWorkExecutor(Utility.cpus(), "Redkale-MessageConsumerThread-[" + name + "]-%s"); + String namePrefix = Utility.isEmpty(name) ? "" : ("-" + name); + this.workExecutor = threads > 0 ? WorkThread.createExecutor(threads, "Redkale-MessageConsumerThread" + namePrefix + "-%s") + : WorkThread.createWorkExecutor(Utility.cpus(), "Redkale-MessageConsumerThread" + namePrefix + "-%s"); } this.httpMessageClient = new MessageClient("http", this, this.httpAppRespTopic); this.sncpMessageClient = new MessageClient("sncp", this, this.sncpAppRespTopic);