我正在使用带有SVN作为存储库的spring-cloud-config-server。当我启动cloud-config-server和client [microservice]时,将正确获取配置值。
更改配置值和SVN提交后,我将触发刷新POST调用,URL:http://localhost:8080/actuator/refresh [8080是客户端端口]。 SVN中的更新值未刷新。
众所周知,配置服务器将SVN数据存储在本地。[在我的情况下,文件夹位置-/ tmp / config-repo-5393789580706388886] 这里的奇怪之处在于,SVN中已提交的更改已更新在本地,一旦触发“刷新” REST调用。但这只是应用程序没有将其接收。
Spring Boot版本-2.1.3。
云版本-格林威治发布。
配置服务器详细信息:
Maven依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
</dependency>
application.yml:
spring:
application:
name: spring-cloud-config-server
profiles:
active: subversion
cloud:
config:
server:
svn:
uri: https://svn.*****.com/repos/****/microservices
username: #####
password: #####
default-label: source
server:
port: 8888
config-client [microservice]详细信息: Maven依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
application.yml:
spring:
application:
name: [client-app-name]
cloud:
config:
uri: http://localhost:8888
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
security:
enabled: false
server:
port: 8080
在启动配置客户端微服务时,能够看到它正在通过配置服务器从预期的SVN位置获取值。
c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
c.c.c.ConfigServicePropertySourceLocator : Located environment: name=[client-app-name], profiles=[default], label=null, version=10718, state=null
b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='configService', propertySources=[MapPropertySource {name='configClient'}, MapPropertySource {name='https://svn.*****.com/repos/****/microservices/source/[client-app-name].properties'}]}
当调用测试REST调用从config客户端获取配置值时,我从SVN获取值。
在文件[client-app-name] .properties中进行更改并提交到SVN之后。在进行REST调用http://localhost:8080/actuator/refresh时,按预期方式获得以下响应。
[]-bash-4.2$ curl -X POST http://localhost:9000/actuator/refresh
["config.client.version","configValue"]-bash-4.2$
同时,按预期从日志中获取以下消息。
c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
c.c.c.ConfigServicePropertySourceLocator : Located environment: name=[client-app-name], profiles=[default], label=null, version=10718, state=null
b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='configService', propertySources=[MapPropertySource {name='configClient'}, MapPropertySource {name='https://svn.*****.com/repos/****/microservices/source/[client-app-name].properties'}]}
对config-client的REST调用,只需返回先前的配置值即可获取更新的配置。
如果我重新启动客户端,则它将获取更新的最新配置。另外,SVN更改会在本地更新[对于我来说,文件夹位置-/ tmp / config-repo-5393789580706388886]
我真的无法找出我犯的错误。解决这个问题的任何投入将非常有帮助。非常感谢。
答案 0 :(得分:0)
您是否为组件设置了abstract class BaseActivity : AppCompatActivity() {
lateinit var snackbar:Snackbar
// call this method to show Snackbar in Activity
fun showMessage(message: String?) {
message?.let {
snackbar = Snackbar.make(
findViewById<View>(android.R.id.content),
message, Snackbar.LENGTH_SHORT
)
snackbar.show()
}
}
fun checkConnection() : Boolean {
val cm = applicationContext.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork: NetworkInfo = cm.activeNetworkInfo
return activeNetwork.isConnected
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return when (keyCode) {
KeyEvent.KEYCODE_HOME -> { true }
KeyEvent.KEYCODE_APP_SWITCH -> { true }
else -> { super.onKeyDown(keyCode, event) }
}
}
}
注释?
例如,@RefreshScope
是具有配置值的TestProperties
。
@ConfigurationProperites
如果您使用的是上面示例中的原始configValue,则必须对其进行注释。
@Bean
public TestComponent(TestProperties properties) {
return new TestComponent(properties.getConfigValue());
}
如果按原样使用属性,则会刷新它。