创建一个spring alibaba nacos Discovery 服务注册demo

1.文档地址:spring alibaba nacos discovery example
2.创建一个spring boot项目
3.添加nacos discovery依赖

<dependencies>
 <dependency>
   <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 </dependency>
     <!-- web启动 -->
  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <!-- nacos配置 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.7</version>
        </dependency>
          <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
 </dependencies>
 
 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

添加配置

##### properties
spring.application.name=producer-server
server.port=10881
##### yaml
spring:
  cloud:
    nacos:
      discovery:
        server-addr: local:8848

在代码中添加@EnableDiscoveryClient

@SpringBootApplication
@NacosPropertySource(dataId = "user-producer",autoRefreshed = true)
@EnableDiscoveryClient
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
        System.out.println("启动成功");
    }
}

加一个democontroller


@RestController
@RequestMapping("/user")
public class UserController {
    @NacosValue("${user.test.config:测试 nacoas 配置}")
    private String nacosConfig;

    @GetMapping("/get")
    public String get(){
        return nacosConfig;
    }
}

启动服务就可以在nacos 上看到发布的服务。

4.服务方调用
1)新建一个springboot项目
2)maven依赖与上面一致即可
3)yaml配置 在本地启动的nacos 可以不加配置,配置了application.name 会在nacos服务列表看到一条服务

server:
  port: 10890
spring:
  application:
    name: user-consumer
nacos:
  config:
    server-addr: localhost:8848

4)注入一个RestTemplate Bean

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
        System.out.println("启动成功");
    }
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

5)在democontroller中调用服务

@RestController
@RequestMapping("/user")
public class UserControler {
    @Resource
    private RestTemplate restTemplate;
    @GetMapping("/get")
    public String get(){
        return restTemplate.getForObject("http://10.10.9.151:10882/user/get",String.class);
    }
}

启动服务,在页面调用consumer接口:
在这里插入图片描述
如果调用url 用服务名称会抛出异常
在这里插入图片描述

在这里插入图片描述
在Bean上添加@LoadBalanced注解 即可正常访问。

 @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

总结:在引用jar的时候由于spring-boot 版本号是2.1.2.RELEASE,spring-cloud-alibaba版本号是2.2.2.RELEASE时 导致服务启动失败。将spring-cloud-alibaba版本号改为2.1.2.RELEASE 可以正常启动。当启动后发现服务没有注册。检查注解是否加上,nacos注册地址是否加上,服务名称是否加上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值