基于springboot实现读取和发布文件到Apollo

  • 关于apollo的介绍和搭建 
     参考文档https://blog.csdn.net/xiaobo5264063/article/details/99693021
  • 如何发布和读取apollo文件
    提前创建一个springboot项目,application.yml文件内容如下:  
    ###服务启动端口号
    server:
      port: 8200
    ###服务名称(服务注册到eureka名称)
    spring:
      application:
        name: app-pitch-weixin
    ###服务注册到eureka地址
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8100/eureka
    ####swagger相关配置
    swagger:
      base-package: com.pitch.weixin.service
      title: 摆摊网项目-微信服务接口
      description: 该项目基于SpringBoot2.0构建微服务电商项目。
      version: 1.0
      terms-of-service-url: www.baidu.com
      contact:
        name: 汪小波
        email: [email protected]
     application.yml内容根据自己的项目就可以了 
     
  •  如何发布文件到apollo
     
  1.  登录apollo,地址: http://IP:8070/, 点击'创建项目'
    基于springboot实现读取和发布文件到Apollo_第1张图片
     
  2. 创建项目
    基于springboot实现读取和发布文件到Apollo_第2张图片
    应用Id、应用名称:  都可以自定义,这里我写的是'app-pitch-weixin'
    部门、应用负责人、项目管理员:   这里因为是测试就选默认的   
    输入完成后,点击'提交'
  3. 将yml文件转成properties文件
    因为apollo默认支持properties文件文件,不支持yml直接上传,所以我们需要将application.yml转成application.properties
    在线转换工具地址: https://www.toyaml.com/index.html基于springboot实现读取和发布文件到Apollo_第3张图片
  4. 配置文件
     将转换的properties文件内容,配置到apollo上对应的app-pitch-weixin项目去
     选择'文本'-->'修改配置'-->输入内容-->'提交'基于springboot实现读取和发布文件到Apollo_第4张图片
  5. 发布
    点击页面上方的'发布'按钮-->确认再按'发布'基于springboot实现读取和发布文件到Apollo_第5张图片
  6.  这里就发布完成了
    基于springboot实现读取和发布文件到Apollo_第6张图片
     
  •  如何读取apollo文件
     
  1. 在刚刚创建的项目中的pom.xml引入依赖,
    
            
                com.ctrip.framework.apollo
                apollo-client
                1.0.0
            
            
                com.ctrip.framework.apollo
                apollo-core
                1.0.0
            
  2. 创建 application.properties,配置内容如下
    app.id=app-pitch-weixin
    apollo.meta=http://IP:8080
    app.id: 就是在apollo中,创建项目的AppId
    apollo.meta: 就是apollo的demo.sh文件配置的config_server_url地址
  3. 配置不同环境 
    应用在不同的环境可以有不同的配置
    可以通过以下3种方式的任意一个配置   // 我是第3种方式实现的
     1)  通过Java的System Property env来指定环境: System.setProperty("env", "DEV"); 
     2)  通过操作系统的System Environment env来指定环境
     3)  通过配置文件,文件位置: 
      window下位置 C:\opt\settings\server.properties 
      linux下位置   /opt/settings/server.properties
      server.properties文件内容
      基于springboot实现读取和发布文件到Apollo_第7张图片
     目前,env支持以下几个值(大小写不敏感):DEV, FAT, UAT, PRO
  4. 启动类开启apollo
    import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
    import com.spring4all.swagger.EnableSwagger2Doc;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    /**
     * Create by wangxb
     * 2019-10-02 17:32
     */
    @SpringBootApplication
    @EnableEurekaClient
    @EnableSwagger2Doc
    @EnableApolloConfig  // 开启apollo配置注解
    public class AppWeiXin {
    
        public static void main(String[] args) {
            SpringApplication.run(AppWeiXin.class, args);
        }
    }
     启动项目    // 启动前最好先删除application.yml文件(提前备份下) 
  5. 查看本地的缓存文件 
    默认情况下,当项目启动后,会读取apollo的配置,在缓存在本地,缓存路径:  C:\opt\data\${AppId}\config-cache\****.properties,当服务器读取失败,就会使用本地缓存的配置文件
  6. 测试
    我们用apollo配置的8200端口号,如果能访问项目,说明成功了!!!
  • apollo实时监听 
     
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.stereotype.Component;
    import com.ctrip.framework.apollo.Config;
    import com.ctrip.framework.apollo.ConfigChangeListener;
    import com.ctrip.framework.apollo.model.ConfigChangeEvent;
    import com.ctrip.framework.apollo.spring.annotation.ApolloConfig;
    import lombok.extern.slf4j.Slf4j;
    
    
    /**
     * 开启分布式配置中心阿波罗监听  监听application.properties配置appllo上appid的所有key和value的变化
     * Create by wangxb
     * 2019-10-02 17:28
     */
    @Component
    @Slf4j
    public class MyCommandLineRunner implements CommandLineRunner {
    	@ApolloConfig
    	private Config config;
    
        
    	@Override
    	public void run(String... args) throws Exception {
    		log.info("####apollo开始监听#####" );
    		config.addChangeListener(new ConfigChangeListener() {
    			@Override
    			public void onChange(ConfigChangeEvent changeEvent) {
    				log.info("####分布式配置中心监听#####" + changeEvent.changedKeys().toString());
    			}
    		});
    	}
    
    }
  •  基于Namespace创建配置文件信息
     
     
  1. 登录apollo,进入到你的项目,点击'添加Namespace'
     基于springboot实现读取和发布文件到Apollo_第8张图片
     
     
  2. 配置Namespace信息,选择'创建Namespace'
    基于springboot实现读取和发布文件到Apollo_第9张图片名称 : 自定义
    类型: public表示可以被其他的appid项目引用,private表示只能是当前appid使用 
    点击'提交'-->'返回到项目首页' 
  3. 配置你的文件信息
    在新建的Namespace配置你的文件信息基于springboot实现读取和发布文件到Apollo_第10张图片
     保存、发布
  4. 项目配置
    在你的微信项目的application.properties配置如下信息 
    ##开启读取配信文件信息
    app.id=app-pitch-weixin
    apollo.meta=http://192.168.2.119:8080
    ##开启读取多个namespace配置文件
    apollo.bootstrap.enabled = true
    ##读取apollo上namespace为application和app-pitch-weixin-mp文件内容
    apollo.bootstrap.namespaces = application,app-pitch-weixin-mp
    
    默认的namespace是application
  5. 启动项目
    查看本地是否缓存了你的namespace配置信息基于springboot实现读取和发布文件到Apollo_第11张图片
     测试你的微信配置是否读取到

你可能感兴趣的:(基于springboot实现读取和发布文件到Apollo)