java actuator是什么,讓我們一起了解一下?
actuator是springboot中的一個附加功能,SpringBoot包含了許多其他特性,可以選擇使用HTTP端點或使用JMX來管理和監視應用程序。審計、健康和度量收集也可以自動應用于應用程序。
考慮是否使用actuator框架的核心因素是什么?
在應用運行過程中,Apollo服務器端的配置信息和實例本地緩存的配置信息并不是時時刻刻都相同的。
因此,我需要能夠通過某種技術手段,可以在需要時準確獲知應用本地的配置數據副本,而不是僅能通過Apollo的protal查看服務器端數據。
這就需要actuator的原因!
讓我們來看看actuator具體是什么。
Spring Boot提供了名稱為spring-boot-starter-actuator的starters。
在官方文檔中是這樣介紹的:
Starter for using Spring Boot’s Actuator which provides production ready features to help you monitor and manage your application
其實也不難理解,讓我們實戰操作一下。
首先,定義一個SchemaEndpoint類。當然,得用@Endpoint注解來標注這個類,還要再提供一個使用@ReadOperation標注的方法:
@Endpoint(id?=?"schema") public?class?SchemaEndpoint?{ ? ????protected?ApolloConverterFactory?factory; ? ????public?SchemaEndpoint(ApolloConverterFactory?factory)?{ ????????this.factory?=?factory; ????} ? ????@ReadOperation ????public?SchemaDescriptor?schema()?{ ????????return?new?SchemaDescriptor(factory.getSchemaList(),?factory.getGroups()); ????} ? ????public?static?final?class?SchemaDescriptor?{ ????????protected?Properties?schemaList; ? ????????protected?Map?groups; ? ????????public?SchemaDescriptor(@Nullable?Properties?schemaList,?Map ?groups)?{ ????????????this.schemaList?=?schemaList; ????????????this.groups?=?groups; ????????} ? ????????@Nullable?public?Properties?getSchemaList()?{ ????????????return?this.schemaList; ????????} ? ????????@Nullable?public?Map ?getGroups()?{ ????????????return?this.groups; ????????} ????} }
這里面的ApolloConverterFactory是基于Apollo本地緩存的配置信息創建數據轉換器的工廠類。它的getSchemaList方法,返回的是sec.insight.schema.list這個namespace的本地緩存數據,getGroups返回的是每一組schema的配置集合清單。
然后,再來編寫一個配置類:
@Configuration @ConditionalOnExpression("${apollo.boostrap.enabled:true}?&&?${spring.apollo.schema.enabled:true}") public?class?ApolloSchemaConfiguration?{ ????@Bean ????public?ApolloConverterFactory?apolloConverterFactory()?{ ????????return?new?ApolloConverterFactory(); ????} ? ????@Bean ????@ConditionalOnMissingBean ????@ConditionalOnEnabledEndpoint(endpoint?=?SchemaEndpoint.class) ????public?SchemaEndpoint?schemaEndpoint(ApolloConverterFactory?factory)?{ ????????return?new?SchemaEndpoint(factory); ????} }
最后直接測試就可以了。
以上就是小編今天的分享了,希望可以幫助到大家。