当前位置:   article > 正文

spring-cloud-starter-alibaba-nacos-discovery 启动服务发现

spring-cloud-starter-alibaba-nacos-discovery


参考 : https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery

一、引入 Nacos Discovery Starter 依赖

springboot 版本 2.3.12.RELEASE对应 Nacos Discovery 2.2.7.RELEASE 版本

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
             <version>2.2.7.RELEASE</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
二、新增服务
1、SPRING-CLOUD-SERVICE-CONFIG-PROVIDER 服务
①、bootstrap.yaml 配置
server:
  port: 20002
spring:
  application:
    name: SPRING-CLOUD-SERVICE-CONFIG-PROVIDER
  cloud:
    nacos:
      discovery:
        server-addr: 42.193.0.90:8848
        service: ${spring.application.name:DEFAULT-SERVICE-NAME}
        username: nacos
        password: nacos
        namespace: 2022-4-1-prod
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
②、开启服务自动注册并新增测试接口

启动类添加 @EnableDiscoveryClient 注解,开启服务自动注册

新增测试接口 http://127.0.0.1:20002/config/student

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    @GetMapping("/student")
    public String getStudent() {
        return JSONObject.toJSONString(student);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
2、新增 SPRING-CLOUD-SERVICE-CONFIG-CONSUMER 服务
①、bootstrap.yaml 配置
server:
  port: 20003
spring:
  application:
    name: SPRING-CLOUD-SERVICE-DISCOVERY-CONSUMER
  cloud:
    nacos:
      discovery:
        server-addr: 42.193.0.90:8848
        service: ${spring.application.name:DEFAULT-SERVICE-NAME}
        username: nacos
        password: nacos
        namespace: 2022-4-1-prod
        cluster-name: DEFAULT
        weight: 1   # 1 ~ 100,数值越大,权重越大
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
②、开启服务自动注册并调用 SPRING-CLOUD-SERVICE-CONFIG-PROVIDER 服务接口

启动类添加 @EnableDiscoveryClient 注解,开启服务自动注册

③、RestTemplate 配置类
@Configuration
public class RestTemplateConfig {
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
④、调用 SPRING-CLOUD-SERVICE-CONFIG-PROVIDER 服务接口
@RestController
@RequestMapping("/discovery")
public class DiscoveryController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/select")
    public String selectService() {
        ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://SPRING-CLOUD-SERVICE-CONFIG-PROVIDER/config/student", String.class);
        return responseEntity.getBody();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
⑤、调用结果

在这里插入图片描述

三、解决错误

Springcloud的RestTemplate 使用服务名报异常 java.net.UnknownHostException
在这里插入图片描述
添加 @LoadBalanced 注解

@Configuration
public class RestTemplateConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

调用服务

ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://SPRING_CLOUD_SERVICE_CONFIG_PROVIDER/config/student", String.class);
  • 1

在这里插入图片描述
需要修改服务名,将 SPRING_CLOUD_SERVICE_CONFIG_PROVIDER 服务名改为 SPRING-CLOUD-SERVICE-CONFIG-PROVIDER,负载均衡 Ribbon 是不支持下划线的,只支持横线

运行成功
在这里插入图片描述
demo 地址https://gitee.com/LingYunYe/nacos-example-study/tree/master/nacos-springcloud-discovery-examples/src/main

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/315232
推荐阅读
相关标签
  

闽ICP备14008679号