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获取配置的主要内容,如果未能解决你的问题,请参考以下文章