在哪里可以找到有关可在运行时修改的Hikari属性的信息?
我试图修改 connectionTimeout 。我可以这样做,它将在HikariDataSource
中进行修改,没有异常(通过设置检查然后获取属性),但它不起作用。
如果我最初这样做:
HikariConfig config = new HikariConfig();
config.setConnectionTimeout(12000);
HikariDataSource pool = new HikariDataSource(config);
以后我做
config.setConnectionTimeout(5000);
Hikari尝试连接12秒而不是5秒。
或者有没有办法改变价值? 是否有其他属性具有相同的行为?
答案 0 :(得分:1)
您无法通过在配置对象上重置属性值来动态更新属性值 - 在实例化Hikari池时最终会读取一次配置对象(请查看PoolBase.java中的源代码以查看这是如何运作的。
但是,您可以执行所需操作并通过JMX在运行时更新连接超时值。如何执行此操作在hikari文档here
中进行了解释答案 1 :(得分:0)
您可以通过MX bean执行此操作,但无需使用JMX
sudo chmod 777 path/to/folder/of/file/specificFile.ext
请记住,您需要在初始配置中启用池挂起
public void updateTimeout(final long connectionTimeoutMs, final HikariDataSource ds) {
var poolBean = ds.getHikariPoolMXBean();
var configBean = ds.getHikariConfigMXBean();
poolBean.suspendPool(); // Block new connections being leased
configBean.setConnectionTimeout(connectionTimeoutMs);
poolBean.softEvictConnections(); // Close unused cnxns & mark open ones for disposal
poolBean.resumePool(); // Re-enable connections
}