三、Spring Cloud Alibab-Feign-服务调用

一、概述

        Feign 是一个声明式的伪 HTTP 客户端,它使得写 HTTP 客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用 Feign 注解和 JAX-RS 注解。Feign 支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,Nacos 也很好的兼容了 Feign,默认实现了负载均衡的效果。

二、使用步骤

  1. 添加依赖;
  2. 启动类启用Feign;
  3. 编写远程调用接口;
  4. 使用接口,完成服务调用

三、案例演示

        本案例是在上一篇文章《二、Spring Cloud Alibaba-Nacos-服务注册与发现》的基础上进行改造的。
        在上一篇文章的服务消费者(nacos-consumer)模块中,是使用RestTemplate来调用服务提供者,在实际开发中并不会这么做,此案例就使用Feign来实现服务调用。
        注:以下代码改造均为服务消费者(nacos-consumer)模块!!!

3.1、Maven依赖(POM)

        在服务消费者(nacos-consumer)模块中添加Feign依赖:

<!-- Feign Start -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- Feign End -->

3.2、启动类(Application)

        在启动类上添加@EnableFeignClients注解,启用Feign服务调用功能:

package com.zhoumo.nacos.consumer;

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

@SpringBootApplication
// Nacos服务注册与发现
@EnableDiscoveryClient
// Feign服务调用
@EnableFeignClients
public class NacosConsumerApplication {

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

3.3、远程调用接口(Client)

  1. 创建远程调用接口,指定Feign调用服务名,并在接口中定义需要调用的服务方法; name-被调用服务名,fallback-调用失败处理类
package com.zhoumo.nacos.consumer.client;

import com.zhoumo.nacos.consumer.client.fallback.ProviderServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(name = "service-provider", fallback = ProviderServiceFallback.class)
public interface ProviderClient {

    @RequestMapping("/provider/hello")
    String hello();

}
  1. 当Feign调用服务失败时,便会进入相应的处理方法中。
package com.zhoumo.nacos.consumer.client.fallback;

import com.zhoumo.nacos.consumer.client.ProviderClient;
import org.springframework.stereotype.Component;

@Component
public class ProviderServiceFallback implements ProviderClient {

    @Override
    public String hello() {
        return "Remote call to nacos-provider failed!";
    }
}

四、启动项目验证是否注册成功

        通过浏览器访问Nacos Server:http://192.168.145.129:8848/nacos;然后点击服务列表,即可查看到该服务已注册到Nacos Server上:
在这里插入图片描述

五、浏览器访问测试接口

在这里插入图片描述

六、测试服务调用失败

  1. 在配置文件中打开Hystrix熔断功能;
feign:
  hystrix:
    enabled: true
  1. 关闭服务提供者(nacos-provider);
    在这里插入图片描述
  2. 刷新浏览器,查看调用结果。
    在这里插入图片描述

七、总结

        本文详细介绍了如何在项目中使用Feign来进行服务调用的完整步骤,以及开启服务熔断处理服务调用失败的情况。并在上篇文章的基础上,用Feign替代RestTemplate实现服务调用案例演示。


发布了47 篇原创文章 · 获赞 16 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/zorro_jin/article/details/105293609