Pārlūkot izejas kodu

自己解析配置中心推送来的配置信息

weihf 5 gadi atpakaļ
vecāks
revīzija
3a81df8705

+ 34 - 0
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/config/NacosConfig.java

@ -0,0 +1,34 @@
1
package com.ai.ipu.server.config;
2

3

4
import org.springframework.context.annotation.Bean;
5
import org.springframework.context.annotation.Configuration;
6

7
import com.alibaba.nacos.api.config.annotation.NacosConfigListener;
8
import com.alibaba.nacos.api.config.annotation.NacosValue;
9

10

11
@Configuration
12
public class NacosConfig {
13
	//在Configuration中动态更新将失效,需要自己在onMessage里解析更新后的配置文件,再用解析后的值覆盖
14
	@NacosValue(value = "${service001Url:defaultValue}", autoRefreshed = true)
15
    private String service001Url;
16
	@NacosValue(value = "${service001Param:defaultValue}", autoRefreshed = true)
17
    private String service001Param;
18
	
19
	@Bean(name="getService001Url")
20
	public String getService001Url() {
21
		return service001Url;
22
	}
23
	
24
	@Bean(name="getService001Param")
25
	public String getService001Param() {
26
		return service001Param;
27
	}
28
	
29
	@NacosConfigListener(dataId = "myService")
30
	public void onMessage(String config) {
31
	    System.out.println(config);
32
	    //需要自己解析配置文件
33
	}
34
}

+ 25 - 0
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/control/NacosConsumerControl.java

@ -2,6 +2,7 @@ package com.ai.ipu.server.control;
2 2

3 3
import org.slf4j.Logger;
4 4
import org.slf4j.LoggerFactory;
5
import org.springframework.beans.factory.annotation.Autowired;
5 6
import org.springframework.beans.factory.annotation.Value;
6 7
import org.springframework.http.ResponseEntity;
7 8
import org.springframework.stereotype.Controller;
@ -10,6 +11,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
10 11
import org.springframework.web.bind.annotation.ResponseBody;
11 12
import org.springframework.web.client.RestTemplate;
12 13

14
import com.ai.ipu.server.config.NacosConfig;
15
import com.ai.ipu.server.util.SpringUtil;
13 16
import com.alibaba.nacos.api.annotation.NacosInjected;
14 17
import com.alibaba.nacos.api.config.annotation.NacosValue;
15 18
import com.alibaba.nacos.api.exception.NacosException;
@ -70,4 +73,26 @@ public class NacosConsumerControl {
70 73
		}
71 74
        return null;
72 75
    }
76
	@Autowired
77
	NacosConfig config;
78
	@ResponseBody
79
    @GetMapping(value = "/service001test")
80
    public String service001test() throws NacosException {
81
		try {
82
			if (namingService != null) {
83
				// 选择user_service服务的一个健康的实例(可配置负载均衡策略)
84
				Instance instance = namingService.selectOneHealthyInstance("ipu-rest-scaffold");
85
				// 拼接请求接口url并请求选取的实例
86
				String url = "http://" + instance.getIp() + ":" + instance.getPort() + config.getService001Url() + "?message=" + appName;
87
				logger.debug(String.format("请求URL:%s", url));
88
				ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
89
				logger.debug(String.format("响应结果:%s", entity.getBody()));
90
				return entity.getBody();
91
			}
92
		} catch (Exception e) {
93
			logger.error("get instance from nacos error", e);
94
		}
95
        return null;
96
    }
97
	
73 98
}