SpringCloud的EurekaClient : 客户端应用访问注册的微服务(有断路器场景)

演示客户端应用如何访问注册在EurekaServer里的微服务

一、概念和定义

采用Ribbon或Feign方式访问注册到EurekaServer中的微服务。
1、Ribbon实现了客户端负载均衡,
2、Feign底层调用Ribbon
3、注册在EurekaServer中的微服务api,不通过ip访问,而是通过ServiceId访问
其中ServiceId即配置项spring.application.name标识的注册到EurekaServer中的名称。
使用Feign/Ribbon客户端访问微服务的api,如:
http://ServiceHelloA/HelloA?name=tom
http://ServiceHelloB/HelloB?name=Jerry
说明客户端负载均衡Ribbon解释了ServiceHelloA映射的ip+端口.

二、开发案例

1、Ribbon服务代码

1.1、之前

@Service
public class HelloARibbonService {

@Autowired
RestTemplate restTemplate;

public String visitHelloA(String name) {
return restTemplate.getForObject("http://SERVICEHELLOA/HelloA?name="+name,String.class);
}

}

1.2、现在

@Service
public class HelloARibbonService {

@Autowired
RestTemplate restTemplate;

@HystrixCommand(fallbackMethod = "visitHelloAError")
public String visitHelloA(String name) {
return restTemplate.getForObject("http://SERVICEHELLOA/HelloA?name="+name,String.class);
}

public String visitHelloAError(String name) {
return "HystrixRibbon::hi,"+name+",sorry,visitHelloAError!";
}

}

2、Feign 服务代码

2.1、之前

@FeignClient(value = "SERVICEHELLOA")
public interface HelloAFeignService {

@RequestMapping(value = "/HelloA",method = RequestMethod.GET)
String visitHelloA(@RequestParam(value = "name") String name);

}

2.2、现在

/**
* FeignClient默認引入Hystrix支持,可以關閉
* 使用非常簡單,聲明fallback,並且定時失敗響應即可
*/
@FeignClient(value = "SERVICEHELLOA",fallback = HelloAFeignErrorService.class)
public interface HelloAFeignService {

@RequestMapping(value = "/HelloA",method = RequestMethod.GET)
String visitHelloA(@RequestParam(value = "name") String name);

}
package org.wanma.example.springcloud.clientfeign.service;

import org.springframework.stereotype.Component;

@Component
public class HelloAFeignErrorService implements HelloAFeignService {

@Override
public String visitHelloA(String name) {
return "HystrixFeign::hi,"+name+",feign visitHelloA error!";
}

}

三、案例说明

1、访问注册中心,发现EurekaServer启动了,Ribbon/Feign客户端启动了,但是服务(ServiceHelloA和ServiceHelloB)一个也没有启动

http://localhost:8101/

2、通过Ribbon访问HelloA

http://localhost:8301/HelloARibbon?name=lexiaofei

3、通过Feign访问HelloA

http://localhost:8321/HelloAFeign?name=liangshengqi

四、代码下载

https://github.com/lexiaofei/workspace_SpringHystrix.git

原文地址:https://www.cnblogs.com/lexiaofei/p/6806924.html