1.拷贝依赖:
<!-- openfeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 断路器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!-- ribbon负载均衡 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
2.在主程序上加上一个
@EnableCircuitBreaker
@EnableFeignClients
3.修改yml文件
feign:
hystrix:
enabled: true
4.写接口
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.atguigu.scw.hystrix.MemberServiceFeignHystrix;
import com.atguigu.scw.vo.response.AppResponse;
@FeignClient(value="SCW-USER",fallback=MemberServiceFeignHystrix.class)
public interface MemberServiceFeign {
@PostMapping("/user/login")
public AppResponse login(@RequestParam("loginacct") String loginacct,@RequestParam("password") String password);
}
5.熔断后跳到的响应方法
import org.springframework.stereotype.Component;
import com.atguigu.scw.service.MemberServiceFeign;
import com.atguigu.scw.vo.response.AppResponse;
import lombok.extern.slf4j.Slf4j;
@Component
@Slf4j
public class MemberServiceFeignHystrix implements MemberServiceFeign {
@Override
public AppResponse login(String loginacct, String password) {
AppResponse fail = AppResponse.fail(null);
fail.setMsg("调用远程服务[SCW-USER]失败");
log.error("调用远程服务[SCW-USER]失败");
return fail;
}
}