摘要:一简介是一个声明式的服务客户端,它使得写服务变得更简单。同时支持可插拔的编码器和解码器。对添加了支持,同时在中次用相同的。
转载请标明出处:
http://blog.csdn.net/forezp/a...
本文出自方志朋的博客
上一篇文章,讲述了通过restTemplate+ribbon去消费服务,这篇文章主要讲述通过feign去消费服务。
一、Feign简介Feign是一个声明式的web服务客户端,它使得写web服务变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,包括Feign 注解和JAX-RS注解。Feign同时支持可插拔的编码器和解码器。Spring cloud对Spring mvc添加了支持,同时在spring web中次用相同的HttpMessageConverter。当我们使用feign的时候,spring cloud 整和了Ribbon和eureka去提供负载均衡。
简而言之:
feign采用的是接口加注解
feign 整合了ribbon
二、准备工作继续用上一节的工程: 启动eureka-server,端口为8761; 启动service-hi 两次,端口分别为8762 、8773.
三、创建一个feign的服务创建一个spring-boot工程,取名为:serice-feign,它的pom文件为:
4.0.0 com.forezp service-feign 0.0.1-SNAPSHOT jar service-feign Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE UTF-8 UTF-8 1.8 org.springframework.cloud spring-cloud-starter-eureka org.springframework.cloud spring-cloud-starter-feign org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies Dalston.RC1 pom import org.springframework.boot spring-boot-maven-plugin spring-milestones Spring Milestones https://repo.spring.io/milestone false
向服务注册中心注册它自己,这时service-ribbon既是服务提供者,也是服务消费者,配置文件application.yml
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8765 spring: application: name: service-feign
在程序的入口类,需要通过注解@EnableFeignClients来开启feign:
@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class ServiceFeignApplication { public static void main(String[] args) { SpringApplication.run(ServiceFeignApplication.class, args); } }
定义一个feign接口类,通过@ FeignClient(“服务名”),来指定调用哪个服务:
/** * Created by fangzhipeng on 2017/4/6. */ @FeignClient(value = "service-hi") public interface SchedualServiceHi { @RequestMapping(value = "/hi",method = RequestMethod.GET) String sayHiFromClientOne(@RequestParam(value = "name") String name); }
在web层的controllrt:
@RestController public class HiController { @Autowired SchedualServiceHi schedualServiceHi; @RequestMapping(value = "/hi",method = RequestMethod.GET) public String sayHi(@RequestParam String name){ return schedualServiceHi.sayHiFromClientOne(name); } }
访问http://localhost:8765/hi?name...浏览器交替显示:
四、更改feign的配置hi forezp,i am from port:8762
hi forezp,i am from port:8763
在声明feignclient的时候,不仅要指定服务名,同时需要制定服务配置类:
@FeignClient(name = "stores", configuration = FooConfiguration.class) public interface StoreClient { //.. }
重写配置,需要加@Configuration注解,并重写下面的两个bean,栗子:
@Configuration public class FooConfiguration { @Bean public Contract feignContractg() { return new feign.Contract.Default(); } @Bean public BasicAuthRequestInterceptor basicAuthRequestInterceptor() { return new BasicAuthRequestInterceptor("user", "password"); } }
本文源码下载:
https://github.com/forezp/SpringCloudLearning/tree/master/chapter3
spring-cloud-feign
优秀文章推荐:史上最简单的 SpringCloud 教程 | 终章
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69944.html
摘要:它就是史上最简单的教程第三篇服务消费者后端掘金上一篇文章,讲述了通过去消费服务,这篇文章主要讲述通过去消费服务。概览和架构设计掘金技术征文后端掘金是基于的一整套实现微服务的框架。 Spring Boot 配置文件 – 在坑中实践 - 后端 - 掘金作者:泥瓦匠链接:Spring Boot 配置文件 – 在坑中实践版权归作者所有,转载请注明出处本文提纲一、自动配置二、自定义属性三、ran...
摘要:在服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于的。配置文件如下在工程的启动类中通过向服务中心注册并且注册了一个通过注册表明,这个是负载均衡的。 转载请标明出处: http://blog.csdn.net/forezp/a...本文出自方志朋的博客 在上一篇文章,讲了服务的注册和发现。在服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http re...
摘要:为了保证其高可用,单个服务又必须集群部署。为了解决这个问题,就出现断路器模型。一断路器简介摘自官网已经创建了一个名为的库来实现断路器模式。较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用达到一个阀值是秒次断路器将会被打开。 转载请标明出处: http://blog.csdn.net/forezp/a...本文出自方志朋的博客 在微服务架构中,我们将业务拆分成一个个的服务,...
摘要:下一篇介绍基于的服务注册与调用。服务提供者工程配置这里服务提供者是使用之前进阶教程第三篇整合连接池以及监控改造而来,这里一样的部分就不再重复说明,下面将说明新增的部分。 Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分...
阅读 1205·2021-11-11 16:54
阅读 1718·2021-10-13 09:40
阅读 916·2021-10-08 10:05
阅读 3477·2021-09-22 15:50
阅读 3642·2021-09-22 15:41
阅读 1708·2021-09-22 15:08
阅读 2309·2021-09-07 10:24
阅读 3552·2019-08-30 12:52