首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用重新启动HikariCP

用重新启动HikariCP
EN

Stack Overflow用户
提问于 2019-01-16 19:14:28
回答 2查看 2.3K关注 0票数 1

最近,我已经将我的应用程序配置为使用Spring作为配置存储库。

  • 弹簧启动-2.1.1
  • 弹簧云依赖- Greenwich.RC2

我的应用程序使用的几乎所有东西都是现成的。我刚刚在application.yml中配置了数据库,并在后台进行了HikariCP自动配置。

我正在使用这个在RefreshEndpoint上调用RefreshEndpoint方法的作业刷新我的应用程序。

代码语言:javascript
复制
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.endpoint.RefreshEndpoint;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@EnableScheduling
@Component
public class ConfigRefreshJob {

    private static final Logger LOG = LoggerFactory.getLogger(ConfigRefreshJob.class);

    private static final int ONE_MINUTE = 60 * 1000;

    private final RefreshEndpoint refreshEndpoint;

    @Autowired
    public ConfigRefreshJob(final RefreshEndpoint refreshEndpoint) {
        this.refreshEndpoint = refreshEndpoint;
    }

    @Scheduled(fixedDelay = ONE_MINUTE)
    public void refreshConfigs() {
        LOG.info("Refreshing Configurations - {}", refreshEndpoint.refresh());
    }
}

一切看起来都很好,但是每次刷新配置时,我都会看到下面的日志。这些日志显示,每次刷新时,HikariCP池都会关闭并启动。

代码语言:javascript
复制
2019-01-16 18:54:55.817  INFO 14 --- [taskScheduler-9] o.s.b.SpringApplication       : Started application in 0.155 seconds (JVM running for 144.646)
2019-01-16 18:54:55.828  INFO 14 --- [taskScheduler-9] c.z.h.HikariDataSource        : HikariPool-1555 - Shutdown initiated...
2019-01-16 18:54:55.828  INFO 14 --- [taskScheduler-9] c.z.h.HikariDataSource        : HikariPool-1555 - Shutdown completed.
2019-01-16 18:54:55.828  INFO 14 --- [taskScheduler-9] c.d.ConfigRefreshJob          : Refreshing Configurations - []
2019-01-16 18:55:03.094  INFO 14 --- [  XNIO-1 task-5] c.z.h.HikariDataSource        : HikariPool-1556 - Starting...
2019-01-16 18:55:03.123  INFO 14 --- [  XNIO-1 task-5] c.z.h.HikariDataSource        : HikariPool-1556 - Start completed.

如果我查看这些日志的时间,大约需要8秒才能再次配置HikariCP。

到目前为止,我还没有在我的应用程序中发现任何问题,因为现在应用程序的负载并不多,但是这里有几个问题。

  1. 重新启动HikariCP是否会增加对应用程序的加载?
  2. 如果重新启动会导致问题,是否有一种方法不刷新HikariCP?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-18 18:12:20

默认情况下,HikariCP是可刷新的,因为对它所做的更改会在池启动后封住配置。

所以禁用它,将spring.cloud.refresh.refreshable设置为空集。

下面是要在yaml中配置的示例

代码语言:javascript
复制
spring:
  cloud:
    refresh:
      refreshable:
      - com.example.app.config.ConfigProperties

其中ConfigProperties是带@RefreshScope注释的类。

票数 3
EN

Stack Overflow用户

发布于 2020-05-26 08:10:48

这对我有效,(spring-boot-2.2.7.RELEASE,spring-cloud-Hoxton.SR4)

代码语言:javascript
复制
spring.cloud.refresh.extra-refreshable=com.zaxxer.hikari.HikariDataSource
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54223822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档