apollo获取配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apollo获取配置相关的知识,希望对你有一定的参考价值。

参考技术A   当应用使用下面的语句获取配置时,我们称之为获取应用自身的配置,也就是应用自身的application namespace的配置。

对这种情况的配置获取规则,简而言之如下:

  所以如果应用部署在A数据中心,但是用户没有在Apollo创建cluster,那么获取的配置就是默认cluster(default)的。

  如果应用部署在A数据中心,同时在运行时指定了SomeCluster,但是没有在Apollo创建cluster,那么获取的配置就是A数据中心cluster的配置,如果A数据中心cluster没有配置的话,那么获取的配置就是默认cluster(default)的。

  以FX.Hermes.Producer为例,hermes producer是hermes发布的公共组件。当使用下面的语句获取配置时,我们称之为获取公共组件的配置。

对这种情况的配置获取规则,简而言之如下:

  前面提到了Apollo客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。长连接实际上我们是通过Http Long Polling实现的,具体而言:

  考虑到会有数万客户端向服务端发起长连,在服务端我们使用了async servlet(Spring DeferredResult)来服务Http Long Polling请求。

apollo 从配置中获取某个配置

 

 

 

 

 

package com.sea.comon.utils;

import java.text.MessageFormat;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;

/**
 * apollo国际化配置文件
 * 
 * @author Merlin
 *
 */
@Configuration
public class ApolloMessageUtil implements InitializingBean {

    private static Config enPublicConfig = ConfigService.getConfig("message"); // apollo 总创建的命名空间名字

    private static ApolloMessageUtil apolloMessage = null;

    public static ApolloMessageUtil getApolloMessage() {
        return apolloMessage;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        apolloMessage = this;
    }

    public static String getString(String key, Object[] params) {
        String msg = null;
        if (!StringUtils.isEmpty(key)) {

            String messageKey = enPublicConfig.getProperty(key, "");
            msg = MessageFormat.format(messageKey, params);
        }
        return msg;
    }
    
    public static String getString(String key) {
        String msg = null;
        if (!StringUtils.isEmpty(key)) {

            msg = enPublicConfig.getProperty(key, "");
        }
        return msg;
    }
    
    public static String getString(Config config ,String key) {
        String msg = null;
        if (!StringUtils.isEmpty(key)) {

            msg = config.getProperty(key, "");
        }
        return msg;
    }
}

 

以上是关于apollo获取配置的主要内容,如果未能解决你的问题,请参考以下文章

如何获取Apollo上项目下的所有namespace?

apollo 从配置中获取某个配置

转 apollo客户端实现不重启项目动态获取配置

k8s 部署 apollo 配置中心

k8s 部署 apollo 配置中心

Apollo架构篇 - 分布式配置中心Apollo