当前位置: 首页 > 知识库问答 >
问题:

使用Spring云配置重新启动HikariCP

潘璞瑜
2023-03-14

我最近将我的应用程序配置为使用SpringCloudConfig和Github作为配置存储库。

  • Spring靴-2.1。1.发布

我的应用程序几乎使用了所有现成的东西。我刚刚在应用程序中配置了数据库。yml我有HikariCP自动配置在后台发挥神奇的作用。

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

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池在每次刷新时都会关闭和启动。

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.

如果我查看这些日志的时间,重新配置HikariCP大约需要8秒。

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

>

如果重新启动会导致问题,是否有办法不刷新HikariCP?

共有2个答案

淳于博
2023-03-14

这对我来说很有效(Spring Boot-2.2.7。释放,Spring-云-霍克斯顿。SR4)

spring.cloud.refresh.extra-refreshable=com.zaxxer.hikari.HikariDataSource
宋运锋
2023-03-14

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

所以禁用这个,设置spring。云刷新可刷新到空集。

下面是在yaml中配置的示例

spring:
  cloud:
    refresh:
      refreshable:
      - com.example.app.config.ConfigProperties

其中ConfigProperties是用@ReFresScope注释的类。

 类似资料:
  • 我正在做一个测试项目,为我们未来的项目尝试SpringBoot。 我们正在使用jasig CAS,我正在尝试配置Spring Boot和嵌入式tomcat服务器。 所以我加入了pom。xml spring启动程序安全性 之后,我尝试配置WebSecurityConfig- 这里是第一个问题:类组织。springframework。安全中科院。网状物应用程序未重新确认CasAuthenticatio

  • 我正在关注应用程序中的条目。 我有下面的spring云服务器应用程序代码。 我收到以下错误。 启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2021 02月24日01:39:52.356错误20804---[restartedMain]o.s.b.d.LoggingFailureAnalysisReporter: 应用程序无法启动 描述:

  • 我为spring-boot创建了一个spring安全配置类。我的登录页面有资源css、js和ico文件。这些资源由于安全原因而被拒绝,并且每次都被重定向到登录页面。为什么EnableWebMVCSecurity不添加类路径资源位置。在更改代码后,如第二个代码片段所示,将添加I Classpath资源位置。不明白第一段代码中的资源缺少什么。 我通过将代码更改为 在更改代码之后,我注意到忽略路径被添加

  • 在这里,我使用rancher和docker compose来初始化spring cloud config客户端和服务器,但当spring cloud config server未就绪时,客户端启动失败,需要在服务器就绪时重新启动。我想问,当服务器准备就绪时,是否有任何机制可以让SpringCloudConfig客户端重新加载或重新启动?

  • 我的Spring云配置客户端依赖于Spring。云起动机。公共汽车amqp,但它仍然没有启用总线/刷新endpoint 我在配置客户端应用程序中有这些依赖项,但仍然没有启用总线/刷新、总线/环境。 请让我知道我的客户申请中缺少什么。 注: 我尝试在应用程序中设置这些指标。yml或应用程序。属性,因为这些属性由总线自动配置用来启用endpoint。 在我的Spring Cloud Config Se

  • Kubernetes文档以及关于重新启动策略的Openshift文档显示,可以使用Always、Never或OnFailure配置POD。 那么我如何从部署配置中做到这一点呢?