SpringCloud三:Feign(实现服务间的调用)

Feign简介

Feign是简化Java HTTP客户端开发的工具(java-to-httpclient-binder),它的灵感来自于Retrofit、JAXRS-2.0和WebSocket。Feign的初衷是降低统一绑定Denominator到 HTTP API的复杂度,不区分是否为restful。

快速体验

在用户微服务调用短信微服务的方法

(1)在javakf_user模块添加依赖(调用方)

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

(2)修改javakf_user模块的启动类,添加注解
@EnableDiscoveryClient
@EnableFeignClients
(3)在javakf_user模块创建cn.com.javakf.user.client包,包下创建接口

@FeignClient(value = "javakf-sms")
public interface SmsClient {

	@RequestMapping(value = "/sms/{id}", method = RequestMethod.GET)
	public Result findById(@PathVariable("id") String id);

}

@FeignClient注解用于指定从哪个服务中调用功能 ,注意 里面的名称与被调用的服务名保持一致,并且不能包含下划线。
@RequestMapping注解用于对被调用的微服务进行地址映射。
注意 @PathVariable注解一定要指定参数名称,否则出错
(4)修改javakf_user模块的 UserController

@Autowired
private SmsClient smsClient;

@ApiOperation(value = "Feign调用测试-调用方", notes = "Feign调用测试-调用方")
@RequestMapping("/sms/{id}")
public Result findSmsById(@ApiParam(name = "id", value = "ID", required = true) @PathVariable String id) {
	return smsClient.findById(id);
}

(5)测试:http://localhost:10001/user/sms/1

负载均衡

测试:同时开启多个短信微服务,看是否是轮流调用。
修改javakf_sms工程SmsController的findById方法

@ApiOperation(value = "Feign调用测试-被调用方", notes = "Feign调用测试-被调用方")
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
public Result findById(@PathVariable String id) {
	System.out.println("No.1");
	Map<String, String> map = new HashMap<String, String>();
	map.put("Feign", "Feign:" + id);
	return new Result(true, StatusCode.OK, "查询成功", map);
}

启动短信微服务后,修改端口和输出信息,再次启动基础微服务
浏览器执行http://localhost:10001/user/sms/1 看是否轮流启动。

发布了160 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45730091/article/details/104981509
今日推荐