设置 Hikari MetricRegistry 时出错

问题描述 投票:0回答:1

我正在尝试在 Play 中使用 MetricRegistry for Hikary! Java 中的应用程序,如 Hikari 的 GitHub 页面 上所述。这基本上就是我所做的:

 HikariDataSource dataSource = ((HikariDataSource) db.dataSource());
 dataSource.setMetricRegistry(metricRegistry);

但是 Hikari 抱怨,因为 MetricRegistry 不应该在构建后设置。这是我收到的错误消息:

java.lang.IllegalStateException:池的配置是 一旦开始就密封。 使用 HikariConfigMXBean 进行运行更改。

是否有更好的方法来设置此属性,例如通过在应用程序配置文件中设置池?

playframework-2.0 hikaricp
1个回答
2
投票

您可以使用

@PostConstruct
来实现此目的:

@Configuration
public class DataSourceConfiguration {

    private final MetricRegistry metricRegistry;

    private final DataSource dataSource;

    public DataSourceConfiguration(final MetricRegistry metricRegistry, final DataSource dataSource) {
        this.metricRegistry = metricRegistry;
        this.dataSource = dataSource;
    }

    @PostConstruct
    public void setUpHikariWithMetrics() {
        if (dataSource instanceof HikariDataSource) {
            ((HikariDataSource) dataSource).setMetricRegistry(metricRegistry);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.