四、Eureka:服务消费者Feign

1、简介

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
总结:
Feign 采用的是基于接口的注解
Feign 整合了ribbon,具有负载均衡的能力
整合了Hystrix,具有熔断的能力

2、搭建一个feign的服务eureka-feign

A、导入依赖

在pom文件引入Feign的起步依赖spring-cloud-starter-feign、Eureka的起步依赖spring-cloud-starter-eureka、Web的起步依赖spring-boot-starter-web:

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
	
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>

B、定义一个feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务。

比如在代码中调用了EUREKA-CLIENT服务的“/hello”接口,代码如下:

@FeignClient(value = "EUREKA-CLIENT")
public interface EurekaClientService {
	@RequestMapping(value = "/hello", method = RequestMethod.GET)
	String home(@RequestParam(value = "name") String name);
}

C、在Web层的controller层,

对外暴露一个"/hello"的API接口,通过上面定义的Feign客户端SchedualServiceHi 来消费服务。代码如下:

@RestController
public class HelloController {
	@Autowired
	EurekaClientService eurekaClientService;

	@GetMapping(value = "/hello")
	public String sayHi(@RequestParam String name) {
		return eurekaClientService.home(name);
	}
}

3、启动程序,多次访问http://localhost:8765/hello?name=adou,浏览器交替显示:

hello adou,i am from port:8762
hello adou,i am from port:8763

4、架构说明

一个服务注册中心,eureka server,端口为8761
eureka-client工程跑了两个实例,端口分别为8762,8763,分别向服务注册中心注册
eureka-feign端口为8765,向服务注册中心注册

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值