refactor: 简化租户元数据,移除冗余的 tenant-id
问题:metadata 中同时配置 tenant-id 和 tenant-group,但 tenant-id 未被使用 分析: - tenant-id: 用于数据隔离,但实际由 TenantContextHolder 提供,元数据中的值无意义 - tenant-group: 用于服务路由,负载均衡器实际只使用此字段 解决方案: 1. 移除 metadata.tenant-id 配置 2. 只保留 metadata.tenant-group 3. 更新 NacosMetadataConfig,移除 tenant-id 处理 4. 更新 docker-compose.yml,移除 TENANT_ID 环境变量 配置简化: 修改前: tenant-id + tenant-group 两个字段 修改后: 只有 tenant-group 一个字段 实例类型: 共享实例: tenant-group = "" (空) VIP实例: tenant-group = "TENANT_VIP_001"
This commit is contained in:
parent
330ec6dea9
commit
e52e2ba801
@ -184,8 +184,7 @@ services:
|
|||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
REDIS_PORT: 6379
|
REDIS_PORT: 6379
|
||||||
JAVA_OPTS: -Xms256m -Xmx512m
|
JAVA_OPTS: -Xms256m -Xmx512m
|
||||||
# 租户元数据 - 共享实例(无特定租户组,所有租户可用)
|
# 租户组 - 共享实例(空值,所有租户可用)
|
||||||
TENANT_ID: "1"
|
|
||||||
TENANT_GROUP: ""
|
TENANT_GROUP: ""
|
||||||
ports:
|
ports:
|
||||||
- "8100:8100"
|
- "8100:8100"
|
||||||
@ -228,8 +227,7 @@ services:
|
|||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
REDIS_PORT: 6379
|
REDIS_PORT: 6379
|
||||||
JAVA_OPTS: -Xms256m -Xmx512m
|
JAVA_OPTS: -Xms256m -Xmx512m
|
||||||
# 租户元数据 - VIP_001 专属实例
|
# 租户组 - VIP_001 专属实例
|
||||||
TENANT_ID: "1001"
|
|
||||||
TENANT_GROUP: "TENANT_VIP_001"
|
TENANT_GROUP: "TENANT_VIP_001"
|
||||||
ports:
|
ports:
|
||||||
- "8101:8101"
|
- "8101:8101"
|
||||||
@ -272,8 +270,7 @@ services:
|
|||||||
# REDIS_HOST: redis
|
# REDIS_HOST: redis
|
||||||
# REDIS_PORT: 6379
|
# REDIS_PORT: 6379
|
||||||
# JAVA_OPTS: -Xms256m -Xmx512m
|
# JAVA_OPTS: -Xms256m -Xmx512m
|
||||||
# # 租户元数据 - VIP_002 专属实例
|
# # 租户组 - VIP_002 专属实例
|
||||||
# TENANT_ID: "1002"
|
|
||||||
# TENANT_GROUP: "TENANT_VIP_002"
|
# TENANT_GROUP: "TENANT_VIP_002"
|
||||||
# ports:
|
# ports:
|
||||||
# - "8102:8102"
|
# - "8102:8102"
|
||||||
|
|||||||
@ -8,19 +8,27 @@ import org.springframework.cloud.client.serviceregistry.Registration;
|
|||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nacos 服务注册元数据配置
|
* Nacos 服务注册元数据配置
|
||||||
*
|
*
|
||||||
* <p>服务启动时自动注册租户标签到 Nacos,支持租户感知的负载均衡</p>
|
* <p>服务启动时自动注册租户组标签到 Nacos,支持租户感知的负载均衡</p>
|
||||||
*
|
*
|
||||||
* <p>支持两种配置方式:</p>
|
* <h3>租户组配置规则:</h3>
|
||||||
* <ul>
|
* <pre>
|
||||||
* <li>环境变量:TENANT_ID, TENANT_GROUP(Docker 环境推荐)</li>
|
* 共享实例: tenant-group 为空(或不配置)→ 所有租户都可使用
|
||||||
* <li>配置文件:spring.cloud.nacos.discovery.metadata.tenant-id/tenant-group</li>
|
* VIP实例: tenant-group = "TENANT_VIP_001" → 仅该租户组可用
|
||||||
* </ul>
|
* </pre>
|
||||||
|
*
|
||||||
|
* <h3>配置方式:</h3>
|
||||||
|
* <pre>
|
||||||
|
* # 方式1: 环境变量(Docker/K8s 推荐)
|
||||||
|
* TENANT_GROUP=TENANT_VIP_001
|
||||||
|
*
|
||||||
|
* # 方式2: 配置文件
|
||||||
|
* spring.cloud.nacos.discovery.metadata.tenant-group=TENANT_VIP_001
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConditionalOnProperty(name = "tenant.routing.enabled", havingValue = "true", matchIfMissing = true)
|
@ConditionalOnProperty(name = "tenant.routing.enabled", havingValue = "true", matchIfMissing = true)
|
||||||
@ -32,73 +40,37 @@ public class NacosMetadataConfig {
|
|||||||
private String applicationName;
|
private String applicationName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 租户 ID,优先级:环境变量 > 配置文件 > 默认值
|
* 租户组,优先级:环境变量 > 配置文件
|
||||||
*/
|
|
||||||
@Value("${TENANT_ID:${spring.cloud.nacos.discovery.metadata.tenant-id:1}}")
|
|
||||||
private String tenantId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 租户组,优先级:环境变量 > 配置文件 > 自动生成
|
|
||||||
* 为空表示共享实例,供所有租户使用
|
* 为空表示共享实例,供所有租户使用
|
||||||
*/
|
*/
|
||||||
@Value("${TENANT_GROUP:${spring.cloud.nacos.discovery.metadata.tenant-group:}}")
|
@Value("${TENANT_GROUP:${spring.cloud.nacos.discovery.metadata.tenant-group:}}")
|
||||||
private String tenantGroup;
|
private String tenantGroup;
|
||||||
|
|
||||||
/**
|
|
||||||
* Nacos Registration Bean,用于动态添加元数据
|
|
||||||
*/
|
|
||||||
private final Registration registration;
|
private final Registration registration;
|
||||||
|
|
||||||
public NacosMetadataConfig(Registration registration) {
|
public NacosMetadataConfig(Registration registration) {
|
||||||
this.registration = registration;
|
this.registration = registration;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化 Nacos 元数据
|
|
||||||
*/
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
logger.info("[Nacos Metadata] 应用名:{}", applicationName);
|
|
||||||
logger.info("[Nacos Metadata] 租户 ID: {}, 租户组:{}", tenantId, tenantGroup);
|
|
||||||
|
|
||||||
// 动态添加租户元数据到服务注册信息
|
|
||||||
if (registration != null && registration.getMetadata() != null) {
|
if (registration != null && registration.getMetadata() != null) {
|
||||||
Map<String, String> metadata = registration.getMetadata();
|
Map<String, String> metadata = registration.getMetadata();
|
||||||
|
|
||||||
// 添加租户 ID
|
// 添加租户组元数据
|
||||||
if (tenantId != null && !tenantId.isEmpty()) {
|
|
||||||
metadata.put("tenant-id", tenantId);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加租户组(VIP 专属实例才有值,共享实例为空)
|
|
||||||
if (tenantGroup != null && !tenantGroup.isEmpty()) {
|
if (tenantGroup != null && !tenantGroup.isEmpty()) {
|
||||||
metadata.put("tenant-group", tenantGroup);
|
metadata.put("tenant-group", tenantGroup);
|
||||||
logger.info("[Nacos Metadata] 注册为 VIP 专属实例,租户组:{}", tenantGroup);
|
logger.info("[Nacos] {} 注册为 VIP 专属实例,租户组:{}", applicationName, tenantGroup);
|
||||||
} else {
|
} else {
|
||||||
logger.info("[Nacos Metadata] 注册为共享实例,供所有租户使用");
|
logger.info("[Nacos] {} 注册为共享实例,供所有租户使用", applicationName);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info("[Nacos Metadata] 服务元数据:{}", metadata);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当前租户 ID
|
|
||||||
*/
|
|
||||||
public String getTenantId() {
|
|
||||||
return tenantId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当前租户组
|
|
||||||
*/
|
|
||||||
public String getTenantGroup() {
|
public String getTenantGroup() {
|
||||||
return tenantGroup;
|
return tenantGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断是否为 VIP 专属实例
|
|
||||||
*/
|
|
||||||
public boolean isVipInstance() {
|
public boolean isVipInstance() {
|
||||||
return tenantGroup != null && !tenantGroup.isEmpty();
|
return tenantGroup != null && !tenantGroup.isEmpty();
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@ -13,10 +13,10 @@ spring:
|
|||||||
group: DEFAULT_GROUP
|
group: DEFAULT_GROUP
|
||||||
username: nacos
|
username: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
# 租户元数据(一库一租户模式时配置)
|
# 租户路由元数据
|
||||||
|
# tenant-group: 空值=共享实例,有值=VIP专属实例
|
||||||
metadata:
|
metadata:
|
||||||
tenant-id: ${TENANT_ID:1}
|
tenant-group: ${TENANT_GROUP:}
|
||||||
tenant-group: TENANT_${TENANT_ID:DEFAULT}
|
|
||||||
|
|
||||||
datasource:
|
datasource:
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
|||||||
@ -13,10 +13,10 @@ spring:
|
|||||||
group: DEFAULT_GROUP
|
group: DEFAULT_GROUP
|
||||||
username: nacos
|
username: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
# 租户元数据(一库一租户模式时配置)
|
# 租户路由元数据
|
||||||
|
# tenant-group: 空值=共享实例,有值=VIP专属实例
|
||||||
metadata:
|
metadata:
|
||||||
tenant-id: ${TENANT_ID:1}
|
tenant-group: ${TENANT_GROUP:}
|
||||||
tenant-group: TENANT_${TENANT_ID:DEFAULT}
|
|
||||||
|
|
||||||
datasource:
|
datasource:
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
|||||||
@ -1120,3 +1120,21 @@ java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBea
|
|||||||
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
at java.base/java.lang.Thread.run(Thread.java:1583)
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
2026-02-19 21:21:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 ===
|
||||||
|
2026-02-19 21:21:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
||||||
|
2026-02-19 21:21:06.989 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task
|
||||||
|
java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null
|
||||||
|
at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38)
|
||||||
|
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
|
||||||
|
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124)
|
||||||
|
at io.micrometer.observation.Observation.observe(Observation.java:499)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124)
|
||||||
|
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
|
||||||
|
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
|
||||||
|
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
|||||||
@ -1084,3 +1084,39 @@ java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBea
|
|||||||
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
at java.base/java.lang.Thread.run(Thread.java:1583)
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
2026-02-19 21:19:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 ===
|
||||||
|
2026-02-19 21:19:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
||||||
|
2026-02-19 21:19:07.541 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task
|
||||||
|
java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null
|
||||||
|
at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38)
|
||||||
|
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
|
||||||
|
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124)
|
||||||
|
at io.micrometer.observation.Observation.observe(Observation.java:499)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124)
|
||||||
|
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
|
||||||
|
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
|
||||||
|
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
2026-02-19 21:24:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 ===
|
||||||
|
2026-02-19 21:24:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
||||||
|
2026-02-19 21:24:07.541 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task
|
||||||
|
java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null
|
||||||
|
at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38)
|
||||||
|
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
|
||||||
|
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124)
|
||||||
|
at io.micrometer.observation.Observation.observe(Observation.java:499)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124)
|
||||||
|
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
|
||||||
|
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
|
||||||
|
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
|||||||
@ -1470,3 +1470,51 @@ java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBea
|
|||||||
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
at java.base/java.lang.Thread.run(Thread.java:1583)
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
2026-02-19 21:19:07.541 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task
|
||||||
|
java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null
|
||||||
|
at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38)
|
||||||
|
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
|
||||||
|
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124)
|
||||||
|
at io.micrometer.observation.Observation.observe(Observation.java:499)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124)
|
||||||
|
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
|
||||||
|
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
|
||||||
|
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
2026-02-19 21:21:06.989 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task
|
||||||
|
java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null
|
||||||
|
at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38)
|
||||||
|
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
|
||||||
|
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124)
|
||||||
|
at io.micrometer.observation.Observation.observe(Observation.java:499)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124)
|
||||||
|
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
|
||||||
|
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
|
||||||
|
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
2026-02-19 21:24:07.541 [scheduling-1] [] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task
|
||||||
|
java.lang.NullPointerException: Cannot invoke "com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections()" because the return value of "com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean()" is null
|
||||||
|
at com.fundplatform.sys.config.HikariMonitorConfig.monitorHikariPool(HikariMonitorConfig.java:38)
|
||||||
|
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
|
||||||
|
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124)
|
||||||
|
at io.micrometer.observation.Observation.observe(Observation.java:499)
|
||||||
|
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124)
|
||||||
|
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
|
||||||
|
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
|
||||||
|
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1583)
|
||||||
|
|||||||
@ -328,3 +328,9 @@
|
|||||||
2026-02-19 21:14:07.550 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
2026-02-19 21:14:07.550 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
||||||
2026-02-19 21:16:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 ===
|
2026-02-19 21:16:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 ===
|
||||||
2026-02-19 21:16:06.991 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
2026-02-19 21:16:06.991 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
||||||
|
2026-02-19 21:19:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 ===
|
||||||
|
2026-02-19 21:19:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
||||||
|
2026-02-19 21:21:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 ===
|
||||||
|
2026-02-19 21:21:06.988 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
||||||
|
2026-02-19 21:24:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - === HikariCP 连接池状态 ===
|
||||||
|
2026-02-19 21:24:07.541 [scheduling-1] [] INFO com.fundplatform.sys.config.HikariMonitorConfig - 连接池名称: FundSysHikariPool
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user