健康检查
Spring Cloud ACM 集成了 Spring Boot 的 Health Check。访问 health endpoint 可以看到 Spring Boot 应用是否正确连接了 ACM 服务器:
{
"status": "UP",
"acm": {
"status": "UP",
"dataIds": [
"com.alibaba.cloud.acm:sample-app.properties"
]
},
"diskSpace": {
"status": "UP",
"total": 1000240963584,
"free": 858827423744,
"threshold": 10485760
},
"refreshScope": {
"status": "UP"
}
}
@RefreshScope
Spring Cloud ACM 也支持 Spring Cloud 的 Refresh Scope 特性。
标记了 @RefreshScope
注解的 Bean 会自动监听 ACM 服务端的变更,并在运行时自动更新配置。代码示例如下:
@RestController
@RequestMapping("/sample")
@RefreshScope
class SampleController {
@Value("${user.name}")
String userName;
@RequestMapping("/acm")
public String simple() {
return "Hello Spring Cloud ACM!" + " Hello " + userName + "!";
}
}
使用了 @ConfigurationProperties
注解的 Bean 默认就是 Refresh Scope 的。
ACM Endpoint
Spring Cloud ACM 内置了一个名为 acm
的 endpoint,您可以通过访问 Spring Boot 应用 management.port (默认为 8080)下的 /acm 访问,如:http://localhost:8080/acm
{
"runtime": {
"sources": [
{
"dataId": "com.alibaba.cloud.acm:sample-app.properties",
"lastSynced": "2017-10-10 10:46:27"
}
],
"refreshHistory": [
{
"timestamp": "2017-10-10 10:46:24",
"dataId": "com.alibaba.cloud.acm:sample-app.properties",
"md5": "8692ae986ec7bc345b3f0f4de602ff13"
}
]
},
"config": {
"group": "DEFAULT_GROUP",
"timeOut": 3000,
"endpoint": "xxx",
"namespace": "xxx",
"accessKey": "xxx",
"secretKey": "xxx"
}
}
备注
- 使用 Spring Boot 2.x 时,ACM Endpoint 访问路径为
/actuator/acm
。 - 使用 Spring Boot 2.x 时,必须添加配置
management.endpoints.web.exposure.include=*
才能访问 ACM Endpoint。