java - HikariCP和kafka在热重载配置映射spring boot Kubernetes时重置和重载事件模式不起作用
问题描述
我按照教程并在 k8s spring boot 应用程序中实现热重载配置映射:
- 添加行家
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-config</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
- 在资源中添加配置
spring.cloud.kubernetes.reload.enabled=true
gw.hotReloadValue=2222
- 类属性
@Getter
@Setter
@ToString
@RefreshScope
@ConfigurationProperties(prefix = "gw")
public class GWProperties {
public int hotReloadValue;
public GWProperties(){
}
}
当我更改 gw.hotReloadValue 的值时它可以工作,但它有 2 个问题
Hotreload 事件模式不起作用:它不会在第一次自动检测配置映射值按事件更改,我需要调用执行器/刷新,然后它可以检测并获得完美的新值 - > 我是否需要在开始时调用执行器/刷新
当配置映射更改值事件发生时,Kafka 和 Hikari 连接被重置,如何不重置这个,因为值更改与 hikari 或 kafka 无关?
2021-07-02 08:38:07.441 INFO--[160-//10.96.0.1/...]
[ ].r.EventBasedConfigurationChangeDetector :Detected change in config maps
2021-07-02 08:38:07.441 INFO--[160-//10.96.0.1/...]
[ ].r.EventBasedConfigurationChangeDetector :Reloading using strategy: REFRESH
2021-07-02 08:38:07.796 INFO--[160-//10.96.0.1/...]
2021-07-02 08:38:08,299 Log4j2-TF-9-AsyncLoggerConfig-8 WARN Recursive logging from [org.apache.kafka.clients.producer.ProducerConfig] for appender [KafkaAppender].
2021-07-02 08:38:08.307 INFO--[160-//10.96.0.1/...]
[ ]o.a.k.c.u.AppInfoParser :Kafka version: 2.5.1
2021-07-02 08:38:08,309 Log4j2-TF-9-AsyncLoggerConfig-8 WARN Recursive logging from [org.apache.kafka.common.utils.AppInfoParser] for appender [KafkaAppender].
2021-07-02 08:38:08.308 INFO--[160-//10.96.0.1/...]
[ ]o.a.k.c.u.AppInfoParser :Kafka commitId: 0efa8fb0f4c73d92
2021-07-02 08:38:08,310 Log4j2-TF-9-AsyncLoggerConfig-8 WARN Recursive logging from [org.apache.kafka.common.utils.AppInfoParser] for appender [KafkaAppender].
2021-07-02 08:38:08.308 INFO--[160-//10.96.0.1/...]
[ ]o.a.k.c.u.AppInfoParser :Kafka startTimeMs: 1625189888307
2021-07-02 08:38:08,311 Log4j2-TF-9-AsyncLoggerConfig-8 WARN Recursive logging from [org.apache.kafka.common.utils.AppInfoParser] for appender [KafkaAppender].
2021-07-02 08:38:08.315 INFO--[190-ad | producer-5]
[ ]o.a.k.c.Metadata :[Producer clientId=producer-5] Cluster ID: BpqeijWETZ-s_ftKGE2uIg
2021-07-02 08:38:08,316 Log4j2-TF-11-AsyncLoggerConfig-10 WARN Recursive logging from [org.apache.kafka.clients.Metadata] for appender [KafkaAppender].
2021-07-02 08:38:08.333 INFO--[190-//10.96.0.1/...]
[ ]o.s.b.SpringApplication :The following profiles are active: kubernetes
2021-07-02 08:38:08.444 INFO--[190-//10.96.0.1/...]
[ ]o.s.b.SpringApplication :Started application in 0.995 seconds (JVM running for 113.465)
2021-07-02 08:38:08.607 INFO--[190-//10.96.0.1/...]
[ ]c.z.h.HikariDataSource :HikariCP - Shutdown initiated...
2021-07-02 08:38:08.615 INFO--[190-//10.96.0.1/...]
[ ]c.z.h.HikariDataSource :HikariCP - Shutdown completed.
2021-07-02 08:38:08.855 INFO--[190-nio-8724-exec-2]
[ ]c.z.h.HikariDataSource :HikariCP - Starting...
2021-07-02 08:38:08.904 INFO--[190-nio-8724-exec-2]
[ ]c.z.h.HikariDataSource :HikariCP - Start completed.
更新:对于第一个问题,这是因为我的 pom 文件中的配置覆盖了热重载事件模式的配置,我删除了 jacyspt 依赖项,因此热重载事件自动检测而不调用执行器/刷新删除以下依赖项:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.15</version>
</dependency>
解决方案
推荐阅读
- asp.net - 带有剃须刀的引导轮播问题
- javascript - 当“元素不可交互”时如何使用 Selenium 将“值”设置为输入
- oracle19c - 有没有办法转置两个字符串并得到一个表格作为结果?
- java - 方法 insert(String, Pair
>) 对于 BSTMap 类型不明确 >> 错误 - qt - 如何在 qml 中将半径应用于 ApplicationWindow
- c# - 使用 Twilio 发送 Apple 静默推送通知
- swift - 扩展中符合protocl,如何初始化属性?
- python - 我什么时候应该考虑使用预训练模型 word2vec 模型权重?
- maven - 如何在不执行 mvn install 的情况下在子模块的构建中添加 maven 插件依赖项作为同一项目中的另一个子模块?
- java - Android:尝试根据类型更改 ListView 项目文本颜色