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)

毕业版本依赖关系
在这里插入图片描述
因为是在原项目基础上添加注册中心的,所以这里以项目springboot2.0.4版本为例(如果觉得版本太低可以根据对照表更新版本)

pom依赖

<properties>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
        <spring-cloud-alibaba.version>2.0.2.RELEASE</spring-cloud-alibaba.version>
    </properties>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
 
    <dependencies>
        <!-- web开发相关的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Nacos服务注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.0.2.RELEASE</version>
        <!-- 如果你项目的restful框架用的jersey,eureka或nacos会与它产生ws-rs的依赖冲突,在此需要排除依赖,如果用的是springmvc则可忽略此操作 -->
            <exclusions>
                <exclusion>
                    <groupId>javax.ws.rs</groupId>
                    <artifactId>jsr311-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

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看到本服务
在这里插入图片描述
2.2消费者(consumer)
消费者和提供者的注册方式相同,只不过在此基础上添加了openfeign的服务调用功能

2.2.1依赖

 <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
        <spring-cloud-alibaba.version>2.0.4.RELEASE</spring-cloud-alibaba.version>
    </properties>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
 
    <dependencies>
        <!-- Nacos服务注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>
        <!-- web开发相关的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- openfeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

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
在这里插入图片描述
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接口返回的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值