Spring Cloud构建微服务架构—服务消费Feign
广州为学教育科技有限公司 2019-01-08 16:50 1128次浏览
Spring Cloud FeignSpring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端。它使得编写Web服务客户端变得更加简单。我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口的绑定。它具备可插拔的注解支持,包括Feign注解、JAX-RS注解。它也支持可插拔的编码器和解码器。Spring Cloud Feign还扩展了对Spring MVC注解的支持,同时还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。
下面,我们通过一个例子来展现Feign如何方便的声明对eureka-client服务的定义和调用。
下面的例子,我们将利用之前构建的eureka-server作为服务注册中心、eureka-client作为服务提供者作为基础。而基于Spring Cloud Ribbon实现的消费者,我们可以根据eureka-consumer实现的内容进行简单改在就能完成,具体步骤如下:
根据eureka-consumer复制一个服务消费者工程,命名为:eureka-consumer-feign。在pom.xml中增加下面的依赖:
...
org.springframework.cloud
修改应用主类。通过@EnableFeignClients注解开启扫描Spring Cloud Feign客户端的功能:
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
创建一个Feign的客户端接口定义。使用@FeignClient注解来指定这个接口所要调用的服务名称,接口中定义的各个函数使用Spring MVC的注解就可以来绑定服务提供方的REST接口,比如下面就是绑定eureka-client服务的/dc接口的例子:
@FeignClient("eureka-client")
public interface DcClient {
@GetMapping("/dc")
String consumer();
}
修改Controller。通过定义的feign客户端来调用服务提供方的接口:
@RestController
public class DcController {
@Autowired
DcClient dcClient;
@GetMapping("/consumer")
public String dc() {
return dcClient.consumer();
}
}
通过Spring Cloud Feign来实现服务调用的方式更加简单了,通过@FeignClient定义的接口来统一的生命我们需要依赖的微服务接口。而在具体使用的时候就跟调用本地方法一点的进行调用即可。由于Feign是基于Ribbon实现的,所以它自带了客户端负载均衡功能,也可以通过Ribbon的IRule进行策略扩展。另外,Feign还整合的Hystrix来实现服务的容错保护,在Dalston版本中,Feign的Hystrix默认是关闭的。待后文介绍Hystrix带领大家入门之后,我们再结合介绍Feign中的Hystrix以及配置方式。
在完成了上面你的代码编写之后,读者可以将eureka-server、eureka-client、eureka-consumer-feign都启动起来,来观察eureka-consumer-feign服务是如何消费eureka-client服务的/dc接口的,并且也可以通过启动多个eureka-client服务来观察其负载均衡的效果。
那些年我走过的弯路,疯狂JAVA把我拉回正道
人生究竟有没有弯路呢?是否走过的每段路都是必经之路?甚至是超越这平凡世界的途径?谈谈我的想法。
高中毕业那年,在朋友的怂恿下,在填写志愿的时候报了销售相关的专业,说销售容易赚大钱,每个月都能轻松过万。但到了大学毕业后,发现销售并不是我所想的那么简单,销售真的不那么好做,全凭一张嘴,大学里面学的东西几乎用不上,就这样,为人实在的我懵懵懂懂熬过了一年半,每个月就拿那两三千块钱的底薪,运气好就拿点提成,但到手的从来没有超过6000元,在广州这座大城市,想要买房子的话想要靠这点薪水根本不可能。
幸运的是,在一个偶然的机会遇到了我的小学同学,跟我同一年毕业,现在他已经是一家大公司的高级软件工程师了,年薪达到30万以上,还有公积金,准备在广州买房了。后来我问他是怎么办到的,他说他高中毕业那年就开始报名JAVA开发的培训,因为他认为互联网这个行业非常有发展前景,互联网的技术人才更是市场非常缺失的,如果往这个方向发展肯定能赢取不小的成就;另外,我大学也是报了相关的专业,大学四年里断断续续也做了一些项目,积累了一些经验,所以大学毕业后就被一家大型的互联网公司聘请了。我感到非常惊讶,但对自己一事无成,又不会什么能拿出手的技术,怎么拿那么高的薪水。正当我在抱怨自己的时候,他便说他可以把我介绍到我以前参加培训的那家机构报名参加培训,零基础也没关系,他们会用5个月的时间把你培养成一名合格的软件工程师,在培训期间也会接触到一些项目,到时候出去参加工作的时候就不会担心没有经验了。后来我想了一下,有一技在身,肯定不会饿死自己,便接受了小学同学的建议。果然不出我朋友所言,5个月后,那家培训机构根据我的能力把我推荐到一家公司上班,做软件开发,试用期间居然也能达到七千以上,转正后九千加项目提成,这样一来月入过万岂不是很轻松的事情?为了感谢小学同学的帮助,特意请他去吃大餐。
如果没有同学的介绍,如果没有那家培训机构老师的悉心教导,我也不会有今天的成就,你们是不是很羡慕呢?如果你们也是不想做销售,又想拿高薪的话,不妨上网也去那家机构了解一下,疯狂java:www.fkjava.org
联系:谢老师
手机:13632401219