openfeign服务调用配置

https://www.jianshu.com/p/2c2c91c5ac45

本文使用SpringCloud结合Nacos服务发现,Feign远程调用做一个简单的Demo。

1 Nacos
关于Nacos之前写了两篇文章关于SpringBoot对它的使用,感兴趣可以查看一下。

《SpringBoot使用Nacos配置中心》

《SpringBoot使用Nacos服务发现》

在SpringBoot使用的时候,需要自行去向Nacos服务注册自己的服务,Nacos也提供了SpringCloud服务发现的依赖,本文结合spring-cloud-starter-alibaba-nacos-discovery进行使用介绍。

本文使用版本为:

SpringCloud Finchley.SR2
SpringBoot 2.0.3.RELEASE
spring-cloud-starter-alibaba-nacos-discovery 0.2.1.RELEASE
spring-cloud-starter-openfeign 2.0.0.RELEASE
2.本文场景
两个服务,如下:

springcloud-nacos-discovery-provider:端口号10000,服务提供者。
springcloud-nacos-discovery-consumer:端口号10001,服务消费者。
原理很简单,浏览器访问消费者,消费者调用服务提供者。

3.服务提供者
3.1 依赖配置
创建一个项目,项目中加入SpringCloud-Nacos依赖,完整pom如下所示。

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE


com.dalaoyang
springcloud_nacos_discovery_provider
0.0.1-SNAPSHOT
springcloud_nacos_discory_provider
springcloud_nacos_discovery_provider

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.2.1.RELEASE</version>
    </dependency>
</dependencies>

<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>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
3.2 启动类 在启动类加入@SpringBootApplication注解,完整启动类代码如下所示。

package com.dalaoyang;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudNacosDiscoveryProviderApplication {

public static void main(String[] args) {
    SpringApplication.run(SpringcloudNacosDiscoveryProviderApplication.class, args);
}

}

3.3 配置文件
配置文件中配置Nacos服务地址,当前服务名,这里需要注意一点,使用Ribbon负载均衡的时候服务名中不能使用下划线,不然会找不到服务。

配置文件如下所示。

server.port=10000
spring.application.name=springcloud-nacos-discovery-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
3.4 提供服务
创建一个Controller,提供一个方法进行测试,如下所示。

package com.dalaoyang.controller;

import org.springframework.web.bind.annotation.*;

/**

  • @author yangyang

  • @date 2019/2/4
    */
    @RestController
    public class TestController {

    @GetMapping("/test/{string}")
    public String test(@PathVariable String string) {
    return “Hello Nacos :” + string;
    }
    }
    4 服务消费者
    4.1 依赖配置
    与服务提供者类似,在服务消费者加入SpringCloud-Nacos依赖和OpenFeign依赖,完整pom入夏所示。

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE


com.dalaoyang
springcloud_nacos_discovery_consumer
0.0.1-SNAPSHOT
springcloud_nacos_discovery_consumer
springcloud_nacos_discovery_consumer

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<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>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

4.2 启动类
在启动类加入注解@EnableDiscoveryClient并且开启负载均衡,如下所示。

package com.dalaoyang;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudNacosDiscoveryConsumerApplication {

public static void main(String[] args) {
    SpringApplication.run(SpringcloudNacosDiscoveryConsumerApplication.class, args);
}

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

}

4.3 配置文件
配置文件与提供者一致,只是服务名不同,如下所示。

server.port=10001
spring.application.name=springcloud-nacos-discovery-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
4.4 创建服务调用
创建一个Controller进行调用服务,如下所示。

package com.dalaoyang.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**

  • @author yangyang

  • @date 2019/2/4
    */
    @RestController
    public class TestConrtroller {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(“test/{string}”)
    public String test(@PathVariable String string) {
    return restTemplate.getForObject(“http://springcloud-nacos-discovery-provider/test/” + string, String.class);
    }
    }

5 测试
分别启动两个服务,查看Nacos管理页面,如图所示。

image
点击详情可以查看服务的详细信息,如端口号,权重等,如图所示。

image
接下俩在浏览器访问http://localhost:10001/test/dalaoyang,远程调用成功。

image
6.源码
服务提供者:https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_nacos_discovery_provider

服务消费者:https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_nacos_discovery_consumer

26人点赞
SpringCloud

作者:dalaoyang
链接:https://www.jianshu.com/p/2c2c91c5ac45
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值