Apollo客户端简单使用

本文介绍了Apollo客户端的使用步骤,包括引入依赖、配置客户端信息、动态刷新配置以及配置访问密钥。通过创建监听类实现实时配置更新,并讨论了缓存机制。同时,讲解了如何在SpringBoot项目中配置Apollo,确保在服务不可用时能从本地缓存读取配置。
摘要由CSDN通过智能技术生成

Apollo客户端使用

引入依赖
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
</dependency>
架构图

在这里插入图片描述

根据架构图可以看出,在configservice中有个metaservice服务,这个服务用于给客户端和portal端获取configservice和adminservice服务列表,然后调用服务去拉取配置文件或者保存配置文件。

首先我们在项目中引入了客户端的依赖后,需要在配置文件中进行配置客户端信息,我以SpringBoot项目为例,首先在配置文件中配置app:id属性来指定应用ID,apollo:meta属性来指定获取服务列表的接口,因为Client端首先是通过MetaService去注册中心获取adminservice和configservice服务实例,然后再去拉取/更新配置信息。

上面两项配置是让客户端跑起来的核心,接下来就是在我们代码中去使用配置了,创建一个类中定义属性,可以使用@Value修饰属性实现单值绑定,也可以直接使用@ConfigurationProperties注解对类修饰,实现多值绑定。还要在启动类上使用@EnableApolloConfig注解,并且可以指定它获取哪些配置文件,可以指定多个,默认是application。

Q1:单值绑定可以实现动态刷新,多值绑定不能动态刷新?
想要实现动态刷新首先需要在配置文件中进行配置

apollo:
  autoUpdateInjectedSpringProperties: true

其次就是需要创建一个监听类:

/**
 * @Author xjw
 * @Date: 2022/07/19 23:44:40
 * @Description
 */
@Component
public class PropertiesListener implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    @ApolloConfigChangeListener(value = {"application.yml"})
    public void onChange(ConfigChangeEvent changeEvent){
        // 更新相应的bean的属性值,主要是存在@ConfigurationProperties注解的bean
        this.applicationContext.publishEvent(changeEvent);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}

这样就能够实现多值绑定的动态刷新了。

配置访问密钥

在portal端(门户端),我们可以生成secret,当启用生成的密钥时,当应用想要拉取配置文件,需要携带密钥,如果不携带将无法拉取。

缓存

Apollo客户端还能对拉取的配置文件通过properties文件的形式进行缓存,当configservice服务挂掉或者拉取不到文件时会从本地缓存中去获取配置信息。缓存保存的默认目录是/opt/data(Linux),我们也可以在配置文件中进行修改指定它的缓存目录,如果是通过Docker启动的同学记得要把缓存目录挂载出来,别到时候说怎么找不到。

至此,Apollo也就基本可以使用起来辣!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被代码耽误的米其林大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值