在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的
URLConnection
、Apache的Http Client
、Netty的异步HTTP Client, Spring的RestTemplate
。但是,用起来最方便、最优雅的还是要属Feign了。
Feign简介
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
下面实现了Feign的熔断处理,先是pom.xml
文件:
1 |
|
接下来是application.properties
项目配置文件:
1 | server.port=7000 |
eureka.client.service-url.default-zone
服务注册中心,上面的写法针对没有做安全模块的服务配置中心Eureka-Server
,如果你的Eureka-Server
实现了安全模块,写法为:http://username:password@ip:host/eureka/
Feign接口层
1 | package com.fiveplus.feign; |
@FeignClient
对应微服务的application-name
- 接口声明需要与服务提供者保持一致
Hystric熔断层
继承Feign接口层,实现方法,当Eureka注册中心中不存在目标服务对应的请求,那么会进行熔断处理,返回该实现方法的值。
1 | package com.fiveplus.hystric; |
RestController对外开放
1 | package com.fiveplus.controller; |
启动类Application.java
1 | package com.fiveplus; |
结束
在实际使用过程中,也许不需要对外提供服务,依据详细情况具体制定。