使用Spring云配置重新启动HikariCP
我最近将我的应用程序配置为使用SpringCloudConfig和Github作为配置存储库使用Spring云配置重新启动HikariCP,spring,spring-boot,spring-cloud,hikaricp,spring-cloud-config,Spring,Spring Boot,Spring Cloud,Hikaricp,Spring Cloud Config,我最近将我的应用程序配置为使用SpringCloudConfig和Github作为配置存储库 弹簧防尘套-2.1.1.1释放 Spring云依赖项-Greenwich.RC2 我的应用程序几乎使用了所有现成的东西。我刚刚在application.yml中配置了数据库,我的HikariCP自动配置在后台发挥了神奇的作用 我正在使用此作业刷新我的应用程序,该作业调用上的refresh()方法 一切似乎都很好,但每次刷新配置时,我都会看到以下日志。这些日志显示HikariCP池在每次刷新时都会关闭
- 弹簧防尘套-2.1.1.1释放
- Spring云依赖项-Greenwich.RC2
application.yml
中配置了数据库,我的HikariCP自动配置在后台发挥了神奇的作用
我正在使用此作业刷新我的应用程序,该作业调用上的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在默认情况下是可刷新的,因为对它所做的更改会在池启动后密封配置 因此,禁用此选项,将
spring.cloud.refresh.refreshable
设置为空集
下面是在yaml中配置的示例
spring:
cloud:
refresh:
refreshable:
- com.example.app.config.ConfigProperties
其中,
ConfigProperties
是用@RefreshScope
注释的类,HikariCP在默认情况下是可刷新的,因为对它所做的更改会在池启动后密封配置
因此,禁用此选项,将spring.cloud.refresh.refreshable
设置为空集
下面是在yaml中配置的示例
spring:
cloud:
refresh:
refreshable:
- com.example.app.config.ConfigProperties
其中,ConfigProperties
是用@RefreshScope
注释的类,这对我来说很有用(spring boot-2.2.7.RELEASE,spring cloud-Hoxton.SR4)
这对我很有用(spring boot-2.2.7.RELEASE,spring cloud-Hoxton.SR4)
您使用的是什么版本?您可以尝试将
spring.cloud.refresh.refreshables
设置为空集。@Spencergib我用spring版本更新了问题。我正在使用最新的springboot2.1.1.RELEASE
和springclouddepenciencesgreenwich.RC2
@spencergib你能给我指一下这方面的文档吗?我似乎找不到您使用的是什么版本?您可以尝试将spring.cloud.refresh.refreshables
设置为空集。@Spencergib我用spring版本更新了问题。我正在使用最新的springboot2.1.1.RELEASE
和springclouddepenciencesgreenwich.RC2
@spencergib你能给我指一下这方面的文档吗?我似乎觉得如果有一些文档可以帮助您了解如何使用此属性。@Spencergib属性的名称是错误的,它是spring.cloud.refresh.refresh
,而不是refresh
。我使用了您的解决方案,直到我注意到虽然字段名为refreshables
,但setter名为setRefreshable
。请参阅org.springframework.cloud.autoconfigure.RefreshAutoConfiguration
,如果有一些文档可以了解如何使用此属性,这将非常有用。@Spencergib属性的名称是错误的,它是spring.cloud.refresh.refreshable
,而不是refreshables
。我使用了您的解决方案,直到我注意到虽然字段名为refreshables
,但setter名为setRefreshable
。请参见org.springframework.cloud.autoconfigure.RefreshAutoConfiguration
spring.cloud.refresh.extra-refreshable=com.zaxxer.hikari.HikariDataSource