mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-04-22 01:48:35 +08:00
fix 修复 netty 对虚拟线程适配有问题 导致长时间使用 redisson 卡死问题
This commit is contained in:
@@ -34,7 +34,7 @@ public class ThreadPoolConfig {
|
|||||||
@Bean(name = "scheduledExecutorService")
|
@Bean(name = "scheduledExecutorService")
|
||||||
protected ScheduledExecutorService scheduledExecutorService() {
|
protected ScheduledExecutorService scheduledExecutorService() {
|
||||||
// daemon 必须为 true
|
// daemon 必须为 true
|
||||||
BasicThreadFactory.Builder builder = new BasicThreadFactory.Builder().daemon(true);
|
BasicThreadFactory.Builder builder = BasicThreadFactory.builder().daemon(true);
|
||||||
if (SpringUtils.isVirtual()) {
|
if (SpringUtils.isVirtual()) {
|
||||||
builder.namingPattern("virtual-schedule-pool-%d").wrappedFactory(new VirtualThreadTaskExecutor().getVirtualThreadFactory());
|
builder.namingPattern("virtual-schedule-pool-%d").wrappedFactory(new VirtualThreadTaskExecutor().getVirtualThreadFactory());
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -562,4 +562,11 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
|||||||
return Strings.CS.endsWithAny(sequence, searchStrings);
|
return Strings.CS.endsWithAny(sequence, searchStrings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试 CharSequence 是否以指定的后缀结尾。
|
||||||
|
*/
|
||||||
|
public static boolean endsWith(final CharSequence str, final CharSequence suffix) {
|
||||||
|
return Strings.CS.endsWith(str, suffix);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.utils.SpringUtils;
|
|
||||||
import org.dromara.common.redis.config.properties.RedissonProperties;
|
import org.dromara.common.redis.config.properties.RedissonProperties;
|
||||||
import org.dromara.common.redis.handler.KeyPrefixHandler;
|
import org.dromara.common.redis.handler.KeyPrefixHandler;
|
||||||
import org.dromara.common.redis.handler.RedisExceptionHandler;
|
import org.dromara.common.redis.handler.RedisExceptionHandler;
|
||||||
@@ -16,7 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.core.task.VirtualThreadTaskExecutor;
|
|
||||||
import tools.jackson.databind.DefaultTyping;
|
import tools.jackson.databind.DefaultTyping;
|
||||||
import tools.jackson.databind.ext.javatime.deser.LocalDateTimeDeserializer;
|
import tools.jackson.databind.ext.javatime.deser.LocalDateTimeDeserializer;
|
||||||
import tools.jackson.databind.ext.javatime.ser.LocalDateTimeSerializer;
|
import tools.jackson.databind.ext.javatime.ser.LocalDateTimeSerializer;
|
||||||
@@ -72,9 +70,10 @@ public class RedisConfig {
|
|||||||
//设置redis key前缀
|
//设置redis key前缀
|
||||||
.setNameMapper(new KeyPrefixHandler(redissonProperties.getKeyPrefix()))
|
.setNameMapper(new KeyPrefixHandler(redissonProperties.getKeyPrefix()))
|
||||||
.setCodec(codec);
|
.setCodec(codec);
|
||||||
if (SpringUtils.isVirtual()) {
|
// netty 对虚拟线程适配有问题 暂时禁止使用
|
||||||
config.setNettyExecutor(new VirtualThreadTaskExecutor("redisson-"));
|
//if (SpringUtils.isVirtual()) {
|
||||||
}
|
// config.setNettyExecutor(new VirtualThreadTaskExecutor("redisson-"));
|
||||||
|
//}
|
||||||
RedissonProperties.SingleServerConfig singleServerConfig = redissonProperties.getSingleServerConfig();
|
RedissonProperties.SingleServerConfig singleServerConfig = redissonProperties.getSingleServerConfig();
|
||||||
if (ObjectUtil.isNotNull(singleServerConfig)) {
|
if (ObjectUtil.isNotNull(singleServerConfig)) {
|
||||||
// 使用单机模式
|
// 使用单机模式
|
||||||
|
|||||||
Reference in New Issue
Block a user