启用JAVA21虚拟线程功能

This commit is contained in:
dataprince 2024-01-06 10:06:05 +08:00
parent 7a4ef2efdd
commit f2cad965fd
2 changed files with 12 additions and 0 deletions

View File

@ -68,6 +68,10 @@ user:
spring: spring:
application: application:
name: ${ruoyi.name} name: ${ruoyi.name}
threads:
# 启用JAVA21虚拟线程
virtual:
enabled: true
# 资源信息 # 资源信息
messages: messages:
# 国际化资源文件路径 # 国际化资源文件路径

View File

@ -1,11 +1,14 @@
package com.ruoyi.common.web.config; package com.ruoyi.common.web.config;
import com.ruoyi.common.core.utils.SpringUtils;
import io.undertow.server.DefaultByteBufferPool; import io.undertow.server.DefaultByteBufferPool;
import io.undertow.websockets.jsr.WebSocketDeploymentInfo; import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory; import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import java.util.concurrent.Executors;
/** /**
* Undertow 自定义配置 * Undertow 自定义配置
* *
@ -24,6 +27,11 @@ public class UndertowConfig implements WebServerFactoryCustomizer<UndertowServle
WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo(); WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(false, 512)); webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(false, 512));
deploymentInfo.addServletContextAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo); deploymentInfo.addServletContextAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo);
// 启用JAVA21虚拟线程
if (SpringUtils.getProperty("spring.threads.virtual.enabled", Boolean.class, false)) {
deploymentInfo.setExecutor(Executors.newVirtualThreadPerTaskExecutor());
}
}); });
} }