nacos作为注册中心及openfeign的服务调用

nacos作为注册中心及openfeign的服务调用

1.下载安装并启动nacos
之前的文章有详细的下载地址和安装教程

nacos下载传送门:https://blog.csdn.net/qq_41514643/article/details/107513530

nacos安装传送门:https://blog.csdn.net/qq_41514643/article/details/107516554

2.注册在nacos的服务分为提供者(provider)和消费者(consumer)
2.1提供者(provider)
2.1.1添加依赖
springcloudalibaba使用时要注意各个依赖的版本对应,以下是版本对应表

(详见:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E)

毕业版本依赖关系
nacos作为注册中心及openfeign的服务调用_第1张图片
因为是在原项目基础上添加注册中心的,所以这里以项目springboot2.0.4版本为例(如果觉得版本太低可以根据对照表更新版本)

pom依赖


        Finchley.RELEASE
        2.0.2.RELEASE
    
 
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        
    
 
    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            2.0.2.RELEASE
        
            
                
                    javax.ws.rs
                    jsr311-api
                
            
        
    

2.1.2yml配置

server:
  port: 20001
 
spring:
  cloud:
    nacos:
      discovery:
        # 服务注册中心
        server-addr: 192.168.32.129:8848
  application:
    #服务名
    name: base-provider

2.1.3开启注解(如果springcloud版本在E之后即可省略此步骤)
在application启动类添加@EnableDiscoveryClient

启动项目后即可在nacos看到本服务
nacos作为注册中心及openfeign的服务调用_第2张图片
2.2消费者(consumer)
消费者和提供者的注册方式相同,只不过在此基础上添加了openfeign的服务调用功能

2.2.1依赖

 
        1.8
        Finchley.RELEASE
        2.0.4.RELEASE
    
 
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        
    
 
    
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            2.0.2.RELEASE
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
    

2.2.2yml配置

spring:
  application:
    # 服务名
    name: service-comsumer
  cloud:
    nacos:
      discovery:
        # 服务注册中心
        server-addr: 192.168.32.129:8848
 
server:
  # 服务端口
  port: 8070
 
management:
  # 端点检查(健康检查)
  endpoints:
    web:
      exposure:
        include: "*"

2.2.3开启注解(如果springcloud版本在E之后即可省略此步骤)
在application启动类添加@EnableDiscoveryClient
nacos作为注册中心及openfeign的服务调用_第3张图片
2.2.4openfeign的使用
使用openfeign仍采用常规的controller-service开发习惯,逻辑代码在service中实现(@Component:类交给spring管理;@FeignClient:标识扫描的远程调用接口,name为服务名;@GetMapping后为调用目标方法的路径名)

service

package com.example.demo.service;
 
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
 
/**
 * @ClassName TestService
 * @Description
 * @Author Administrator
 * @Date 2020/8/21 0021 9:46
 * @Version 1.0
 */
@Component
@FeignClient(name="base-provider")
public interface TestService {
 
    /**
     * 查询
     * @return
     */
    @GetMapping("/api/tradeinfo/weather")
    String getServiceInfo();
 
    /**
     * 查询
     * @param id
     * @return
     */
    @GetMapping("/api/tradeinfo/{id}")
    String selectById(@PathVariable("id") String id);
 
}

controller

package com.example.demo.controller;
 
import com.example.demo.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/demo")
public class TestController {
 
    @Autowired
    TestService testService;
 
    @GetMapping("/test")
    public String Test(@RequestParam String id) {
        String s = testService.selectById(id);
        return s;
    }
 
    @GetMapping("/test1")
    public String Test1() {
        return testService.getServiceInfo();
    }
 
}
 

以下是调用consumer接口返回的数据

你可能感兴趣的:(spring)