springboot2.0从apollo读取配置

2023-11-13

参考:https://github.com/nobodyiam/apollo-build-scripts

本篇文章包括两点:Windows环境下apollo单机搭建、springboot2.0从apollo读取配置

一、windows环境下aollo单机搭建

1、环境:JDK1.8,mysql 5.7.23,git-2.1.9(执行apollo的启动脚本)

2、下载apollo安装包

3、解压之后,将 apollo-build-scripts-master\sql下的两个sql文本导入mysql中

source   apolloconfigdb.sql的目录;

source   apolloportald.sql的目录;

执行成功之后可以看到,红框这两个database

4、修改demo.sh的内容

修改mysql的url,username,password

之后在git base中执行demo.sh

启动:./demo.sh  start  

停止:./demo.sh stop

5、成功启动apollo服务端和客户端之后,打开浏览器输入http://localhost:8070/

用户名:apollo 

密码:admin

接下来就可以创建自己的项目了

6、apollo成功启动之后,在本地仓库就可以看到下面三个jar,springboot2.0读取apollo使用的就是apollo-client

7、搭建过程可能出现很多问题,查看红框中两个文件夹下的日志

8、切记mysql服务要启动,8080、8070、8090这三个端口不要被占用,也不要随意改动这三个端口

我出现这个异常是因为把(config_server_url=http://localhost:8080)的端口改成8801了,导致registered-replicas和unavailable-replicas  url的端口为8801了,启动成功了,但是配置中心页面一直提示:系统出错,请重试或联系系统负责人

registered-replicas http://localhost:8801/eureka/
unavailable-replicas http://localhost:8801/eureka/,
com.ctrip.framework.apollo.common.exception.ServiceException: No available admin server. Maybe because of meta server down or all admin server down. Meta server address: http://localhost:8080
	at com.ctrip.framework.apollo.portal.component.RetryableRestTemplate.getAdminServices(RetryableRestTemplate.java:172)
	at com.ctrip.framework.apollo.portal.component.RetryableRestTemplate.execute(RetryableRestTemplate.java:90)
	at com.ctrip.framework.apollo.portal.component.RetryableRestTemplate.get(RetryableRestTemplate.java:56)
	at com.ctrip.framework.apollo.portal.api.AdminServiceAPI$HealthAPI.health(AdminServiceAPI.java:43)
	at com.ctrip.framework.apollo.portal.component.PortalSettings$HealthCheckTask.isUp(PortalSettings.java:127)
	at com.ctrip.framework.apollo.portal.component.PortalSettings$HealthCheckTask.run(PortalSettings.java:103)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

9、github上单机搭建文档非常给力了,出现问题,慢慢采坑!!!

二、springboot2.0项目读取apollo配置中心的配置

1、pom.xml 引入apollo-client  jar包,注意这里jar包,单机搭建apollo成功之后就在自己本地库install了,要和自己的apollo版本一致

<dependency>
			<groupId>com.ctrip.framework.apollo</groupId>
			<artifactId>apollo-client</artifactId>
			<version>0.8.0</version>
		</dependency>

2、这里创建了一个项目,app.id = wangwangdev,应用名随便起(还是专业一点吧),部门可以自己修改,开始只有样例1,样例2,在apolloportaldb.serverconfig,修改字段值,其它的管理员都可以修改!

3、ApollaDemoApplication

package com.dl.cn;

import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
/**
 * 在微服务应用启动中使用apollo配置中心获取配置信息
 * */
@EnableApolloConfig
public class ApollaDemoApplication {

	static {
		System.setProperty("-Dapp.id","wangwangdev");
		System.setProperty("-Denv","dev");
		System.setProperty("-Ddev_meta","http://127.0.0.1:8080");
	}

	public static void main(String[] args) {
		SpringApplication.run(ApollaDemoApplication.class, args);
	}

}

4、ApolloDemoController

package com.dl.cn;

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfig;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Properties;
import java.util.Set;

/**
 * Created by Tiger 2018/10/10.
 */
@RestController
@RequestMapping("/apollo")
public class ApolloDemoController {

    /**
     * 从apollo获取配置信息
     * */
    @ApolloConfig
    private Config config;

    @GetMapping("/read_demo")
    public Properties apolloReadDemo(){
        /**
         * 得到当前app.id中的配置
         * */
        Set<String> set = config.getPropertyNames();
        for(String key : set){
            PropertiesUtils.properties.setProperty(key,config.getProperty(key,null));
        }
        for(String key : PropertiesUtils.properties.stringPropertyNames()){
            System.out.println(key+">>>"+PropertiesUtils.properties.getProperty(key));
        }
        return PropertiesUtils.properties;
    }
}

5、application.properties,把server.port 改成非8080,默认是8080

server.port=8000

6、PropertiesUtils

package com.dl.cn;

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

import java.util.Properties;

/**
 * Created by Tiger on 2018/10/10.
 * 读取公共apollo配置
 */
public class PropertiesUtils {
    private static final String COMMON = "nova1.NovaCommon";
    public static Properties properties = new Properties();
    static {
        Config commonConfig = ConfigService.getConfig(COMMON);
        if(commonConfig != null){
            for(String key : commonConfig.getPropertyNames()){
                properties.setProperty(key,commonConfig.getProperty(key,null));
            }
        }
    }
}

7、测试结果

127.0.0.1:8000/apollo/read_demo

{
    "commonKey2": "commonValue2",
    "commonKey1": "commonValue1",
    "email": "Tianyu@163.com",
    "userName": "Tianyu",
    "commonKey3": "commonValue3"
}
2018-10-11 10:32:57.432  INFO 36468 --- [nio-8000-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2018-10-11 10:32:57.455  INFO 36468 --- [nio-8000-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 23 ms
commonKey2>>>commonValue2
commonKey1>>>commonValue1
email>>>Tianyu@163.com
userName>>>Tianyu
commonKey3>>>commonValue3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot2.0从apollo读取配置 的相关文章

  • Apollo配置中心之配置获取方式

    apollo是携程开源的一款配置管理服务 开源地址https github com ctripcorp apollo apollo配置获取说明文档 https github com ctripcorp apollo wiki Java E5
  • apollo灰度发布

    apollo灰度发布 七 https blog csdn net weixin 42412601 article details 88415437
  • Apollo平台计算框架CyberRT

    Cyber RT 框架 Cyber RT Robotic Technology 是一种基于ROS Robot Operating System 的开发框架 专门设计用于构建高性能 实时性要求较高的机器人应用程序 旨在提供一套可靠 高效 灵活
  • Apollo注册到自己的Eureka注册中心+配置中心集群(超详细)

    重要提示 在任何步骤开始之前 谨记下面的东西 在对apollo master这个文件进行处理的时候 要找到文件夹scripts下的文件build bat 苹果用户请找到build sh 并且在最开始的时候运行上述两个文件 在工程文件夹下 s
  • React Apollo 从状态动态创建查询

    这是一个模型情况 我的数据库中有一些字段 比如颜色 大小 高度 我可以获取这些字段并将其显示给可以选择这些字段的用户 然后将它们设置为组件状态 我想要实现的是动态创建GQL查询 不是查询变量 来自存储在状态中的这些字段 Example im
  • Apollo React - ApolloClient 设置中的“useMutation”?

    我有一个有趣的情况 我想使用 Apollo 本身发起刷新令牌请求 也称为调用突变 任何想法 如何实现这样的目标 export default new ApolloClient link ApolloLink from onError gra
  • apollo graphql 响应数据中未显示“Extensions”字段

    这里有一个可重现的例子 https github com stonecold123 typegraphql test Run app js并在操场上导航http localhost 4000 graphql http localhost 4
  • 在节点中使用 apollo -(无反应)

    我想使用 apollo 进行一些批量更新 我需要从节点启动批处理脚本 例如node myscript js 我不知道该怎么做 是否有一个简单的示例可以执行入门中描述的操作 https www apollographql com docs r
  • 为什么我的 graphql Context 返回一个空对象

    我按照以下步骤构建了 graphql apollo v4 服务器docs https www apollographql com docs apollo server data subscriptions enabling subscrip
  • Apollo / GraphQl - 类型必须是输入类型

    向大家致以我正在学习的过程 并将 Apollo 和 graphQL 集成到我的一个项目中 到目前为止一切顺利 但现在我正在尝试进行一些突变 并且在输入类型和查询类型方面遇到了困难 我觉得事情比应有的复杂得多 因此我正在寻求有关如何处理我的情
  • Apollo 客户端错误:无法在上下文中找到“客户端”或作为选项传入。将根组件包装在

    我是新来的阿波罗 我目前正在尝试使用 React 和 Apollo 创建一个应用程序 当我启动我的应用程序时 出现以下错误 在上下文中找不到 客户端 或作为选项传入 将根组件包装在 中 或通过选项传递 ApolloClient 实例 Her
  • 最大 MQTT 连接数

    我需要创建一个服务器场 可以处理 5 100 万个连接 5 00000 个主题 每个客户端一个 每秒处理 300k 消息 我尝试了解各种消息代理的功能 因此我目前使用两个 RHEL EC2 实例 r3 4xlarge 来获取大量可用资源 所
  • Apollo 客户端:网络错误 {"type":"WriteError"}

    我正进入 状态Network Error type WriteError 关于我的阿波罗查询 查询在到达客户端时执行得很好 但将其写入存储时存在问题 任何想法可能会出什么问题吗 这是查询 fragment BpmnProcessInstan
  • Apollo重新获取不重新渲染组件

    我正在使用 graphql 从网络服务获取数据 我的客户端代码是这样的 import React Component from react import Platform StyleSheet Text ActivityIndicator
  • 如何将参数传递给graphql查询?

    我正在尝试在 Meteor blaze 项目中使用 Apollo graphql 我正在使用来自swydo blaze apollo 使用graphql查询从mongoDB获取数据就可以了 Using this one can get da
  • React 自定义挂钩内的 Apollo GraphQL 查询

    我正在尝试列出 Rick Morty API 中的所有角色 我编写了以下钩子以在我的组件中使用 该组件将呈现结果 当我对值进行硬编码时 例如 page 1 filter name Rick 查询运行得很好 如果我尝试使用变量 它会返回错误
  • 即使目标对象存在,Apollo readQuery 也会失败?

    我正在调用 readQuery 我收到一条错误消息 modules js hash 2d0033b4773d9cb6f118946043f7a3d4385825fe 25847 Error Can t find field resoluti
  • 如何在 Vanilla JS 中使用 Apollo Client 创建 GraphQL 订阅

    最近 Apollo Client 发布了 websocket 订阅功能 但到目前为止我只看到它通过在 componentWillMount 生命周期钩子中使用 subscribeToMore 启动查询来使用 这是一个来自的例子https d
  • Apollo 更新查询未调用?

    我正在 GitHunt React 和 GitHunt API 中研究 Apollo pub sub 当我运行这些应用程序并输入新评论时 评论将通过调用提交来保存 然后 updateQueries 代码块在此处运行 const Commen
  • apollo 客户端从存储中删除而不发生突变

    我需要通过 id 从本地存储中删除一条 记录 而不使用突变 因为服务器不支持突变 我尝试像这样手动访问商店 delete this apolloClient store getState apollo data 1112 这会删除记录 但是

随机推荐