springCloud Finchley 实战入门(基于springBoot 2.0.3)【七 Fegin 声明式服务调用】

Fegin 介绍

spring cloud fegin ,他是基于Netflix Fegin实现得,整合了spring cloud Ribbon和spring cloud Hystrix,除了整合这两者得功能外,他还提供了了一种声明式得Web服务客户端定义方式。

快速入门

创建一个spring boot项目命名为"eureka-bussniss-service-user-client-fegin",选择server和fegin的依赖;


img_ef4a18b17062db1ea70c71bcf2b7278a.png
1532587428278.png

application.yml相关配置:

spring:
  application:
    name: service-user-client-fegin
server:
  port: 9001
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/
feign:
  hystrix:
    enabled: true

项目主类EurekaBussnissServiceUserClientFeginApplication,添加@EnableEurekaClient和@EnableFeignClients注解

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class EurekaBussnissServiceUserClientFeginApplication {

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

我们以eureka-bussniss-service-user的服务例。在fegin项目中定义一个接口"UserFeignClient"

/**
 * 标明feign调用的微服务名称
 */
//通过@ FeignClient(“服务名”),来指定调用哪个服务。
// 比如在代码中调用了service-hi服务的“/hi”接口,还可以使用url参数指定一个URL
// fallback  出现错误回调类
@FeignClient(name = "service-user",fallback = UserFallback.class)
public interface UserFeignClient {

    /**
     * 对应service-user微服务中的URL
     * @return
     */
    @GetMapping("/listUsers")
    String listUsers();

}

接着,创建一个Controller来实现对Fegin客户端的调用,使用@Autowired自动注入上面的“UserFeignClient ”实例。并且通过方法实现对service-user的服务发起调用。

@RestController
public class UserFeignApi {
    /**
     * 将刚才定义的userFeignClient注入,并当成普通的接口调用即可
     */
    @Autowired
    private UserFeignClient userFeignClient;

    @GetMapping("/listUsersByFeign")
    public String ListUsers(){
        String users = this.userFeignClient.listUsers();
        return users;
    }
}

方式测试fegin的负载均衡以及服务容错保护的功能,我们创建了一个UserFallback实现UserFeignClient。实现接口请求错误的反馈

@Component
public class UserFallback implements UserFeignClient {
    @Override
    public String listUsers() {
        return "服务调用失败";
    }
}

包路径截图


img_60662937c4427f5d4b82a45e1cf9dc7c.png
1532588267196.png

到这里就已经基本完成了,依次启动service-user(8802,8803两个端口)、fegin。


img_6f0978675ecc9a31710fe14ac6398140.png
1532588691914.png

访问fegin项目的地址http://localhost:9001/listUsersByFeign

img_5359878a512989133e069c3ae77f6f4d.png
1532588711363.png

img_660755d7f996dbb82a99f004fd290e37.png
1532588720488.png

重复请求,会发现接口数据是依次返回8802和8803的数据的。

现在把其中一个service-user服务停掉(8803),一开始当请求负载到8803这个服务实例时,因为当前的服务已经停掉了,所以接口响应显示了我们实现了UserFallback 类的返回。


img_521d30a569b5ce4ea223b006e3abc8ac.png
1532588846177.png

再过几秒钟后,我们继续请求会发现,接口已经全部负载到了8802的服务实例了。


img_363273049bdddb807fa32a142be8f9be.png
1532588992210.png

所以可以看到fegin已经实现了Ribbon和Hystrix的功能了。

github 项目源码

下一篇我们将实现spring cloud config分布式配置中心的组件。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/654252

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。