使用 Spring Cloud Config 重新启动 HikariCP

2023-12-13

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

  • Spring Boot - 2.1.1.RELEASE
  • Spring Cloud 依赖项 - Greenwich.RC2

我的应用程序几乎使用了开箱即用的所有内容。我刚刚配置了数据库application.yml我有 HikariCP 自动配置在后台发挥魔力。

我正在使用这个调用的作业刷新我的应用程序refresh()方法上的刷新端点.

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 秒。

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

  1. HikariCP 的重新启动是否会导致应用程序负载增加的问题?

  2. 如果重启会导致问题,有没有办法不刷新 HikariCP?


HikariCP 默认情况下可刷新,因为对其进行的更改会在池启动后密封配置。

所以禁用这个,设置spring.cloud.refresh.refreshable到一个空集。

这是在yaml中配置的示例

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

where ConfigProperties是带有注释的类@RefreshScope.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring Cloud Config 重新启动 HikariCP 的相关文章

随机推荐

  • 将 python 中的数据框重塑为 3D

    我正在尝试将手写字符数据集重塑为 3D 形式 以便它可以与数字识别数据集连接起来 我尝试了多次 但我不知道如何做到这一点 实际的数字识别数据集的形状为 60000 28 28 字符识别数据集的形状为 372450 785 第一列是目标变量
  • 在 C++ 中从 YUV 转换为 RGB (android-ndk)

    我在 android 中开发 想要将相机的预览回调中的字节数组 YUV 格式 转换为 rgb 格式 我已经使用了这个答案中给出的函数 在Android中从视频图像获取帧 它在java中完美运行 但我的问题是我想在c 中创建该函数 我正在使用
  • mechanize (python) 单击 javascript 类型链接

    是否可以让 mechanize 跟随 javascript 类型的锚链接 我正在尝试使用 mechanize 和 beautifulsoup 登录 python 网站 这是锚链接 a href a
  • 如何在基于 Spring Java 的配置中放置带有正则表达式的 URL

    在 Spring Security XML 配置文件中 我有类似的内容
  • SQLite条件

    我只想将这个函数查询从navicat转换为sqlite查询 Select from tbl sample where ID 1 And IF RECEIPT MODE MANUAL DATE a MANUAL COLLECTION DATE
  • Karate API - 为什么响应不返回调用的功能文件

    我通过传递 un pwd 和端点 url 从后台标签下的另一个功能调用登录功能 如下所示 登录功能已成功运行 但其响应未返回到调用的功能文件 Add Feature Adding products Background table logi
  • java.util.date 错误?

    java util Date 是否有错误 在进行一些测试时 我将毫秒设置为 2147483647 应该给我一个日期 2038 01 19 03 14 07 但它返回的是 1970 01 25 20 31 23 还尝试了 4294967295
  • 不同环境下不同DB名的跨库查询?

    您将如何在不同环境中处理跨数据库查询 例如 db1 development 和 db2 development db1 product 和 db2 product 如果我想在开发过程中执行从 db2 到 db1 的跨数据库查询 我可以使用完
  • 使用 sqoop 导入 Hive 时出现文件存在错误

    我正在尝试将 Retail db 数据库表复制到我已经创建的 Hive 数据库中 当我执行以下代码时 sqoop import all tables num mappers 1 connect jdbc mysql quickstart c
  • 从连接表中过滤

    我在执行一个棘手的 SQL 查询时遇到了一些麻烦 在我的 MySQL 数据库中 有主题表 标签和标签主题来连接它们 我想获取共享相同指定标签的主题 例如 假设我有 3 个标签 id 分别为 1 2 和 3 我想获取与标签 1 2 和 3 关
  • JavaScript 定时器

    我正在尝试使以下 JavaScript 计时器只需单击一个按钮即可执行两个功能 一旦计时器启动 请单击 再次点击 它停止了 单击第三次 它会再次启动 依此类推 我在这里做错了什么 预先非常感谢您
  • Python列表理解-访问最后创建的元素

    是否可以访问 a 中生成的前一个元素列表理解 我正在研究一些玩具加密的东西 将密钥指定为任意大整数 初始化值和元素列表作为要加密的消息 我需要将每个元素与前一个加密元素和密钥进行异或 下面的循环就可以了 previous initializ
  • 由于大文件上传而重置连接,但配置应允许上传

    我在尝试在 MVC 项目中上传大于 4 兆的文件时遇到错误 对于较小的文件 上传效果很好 在网上查了一下 我发现我应该添加
  • Rails 3 - 如何处理 PG 错误不完整的多字节字符

    在 Rails 3 2 应用程序 Ruby 1 9 2 中 我收到以下错误 mobile users update 中发生 PGError 不完整的多字节字符 这些是 Postgres 错误 但是在开发和测试模式下测试时我遇到类似的 SQL
  • 如何避免db not close和cursor异常

    02 02 14 31 34 048 WARN SQLiteCompiledSql 359 Releasing statement in a finalizer Please ensure that you explicitly call
  • 修复 StackOverflow 错误

    我开发了一个应用程序 其中有 4 个选项卡 A B C D 每个选项卡都包含一个活动 在第四个选项卡 D 中 我添加了一个 ActivityGroup 其中还有 3 个活动 X Y Z 在第四个选项卡中 我添加了活动组 但出现 StackO
  • 保持输入占位符始终可见

    我正在尝试对网站中的所有输入进行样式设置 当它们具有值或具有焦点时 占位符将成为输入的标题 它移动到输入的顶部 但浏览器的默认行为会隐藏当有数据时占位符 我真的想远离 JS 解决方案 当前结果 我的CSS input focus webki
  • Java Manifest.mf 类路径问题

    我一直在尝试运行一个 jar 文件 我们称之为 test jar 它在 Unix 系统上使用 Sybase jconn3 jar 我创建了一个 MANIFEST MF 文件 其中包含以下内容 Class Path SYBASE jConne
  • 如何从不同的 main 方法调用 Cucumber 运行程序类

    我是使用命令行界面的新手 所以我只是有一个关于如何使用 CLI 技术调用 Cucumber 的 runner 类的问题 我有一个 Java 程序 其中包含一个 main 方法 当测试人员传递测试用例参数时 它将获取功能文件 java 程序调
  • 使用 Spring Cloud Config 重新启动 HikariCP

    我最近将我的应用程序配置为使用 Spring Cloud Config 和 Github 作为配置存储库 Spring Boot 2 1 1 RELEASE Spring Cloud 依赖项 Greenwich RC2 我的应用程序几乎使用