首先的是pom的依赖
<dependencies>
<!-- Eureka依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- Feign依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
//这个仔provider中加载
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-eureka-client</artifactId>
</dependency>
//以上的三个都要放到consumer当中
//这个在server模块中加载
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
consumer配置
#服务的端口号
server.port=9083
#服务的名字,自己可以随便起
spring.application.name=EUREKA-CONSUMER
//provider只需要配置上面三个即可
#配置服务器节点
eureka.client.service-url.defaultZone=http://localhost:9080/eureka
service-provider.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
service-provider.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
#service-provider.ribbon.listOfServers=localhost:8081
#启用熔断机制
feign.hystrix.enabled=true
这个是server模块的配置
#服务的端口号
server.port=9080
#服务的名字,自己可以随便起
spring.application.name=EUREKA-SERVER1
#配置数据复制的peer节点
eureka.client.service-url.defaultZone=http://localhost:9080/eureka
##关闭自我保护
eureka.server.enable-self-preservation=false
#不注册自己到Eureka注册中心
eureka.client.register-with-eureka=false
##配置不获取注册信息
eureka.client.fetch-registry=false
下面是主要的代码
@FeignClient(name = "EUREKA-PROVIDER")
@EnableCircuitBreaker //熔断的注解
public interface ControllerApi {
@RequestMapping("/commen/list")
public String list();
}
------------------------------------------
@Component
public class OrderApiHandler implements ControllerApi {
@Override
public String list() {
return "出错了弟弟!~";
}
}
------------------------------------------
@RequestMapping("/commen/list")
public String list(){
return controllerApi.list();
}
上面是通过FeignClient注解实现负载均衡与熔断的
------------------------------------------
@Autowired
private LoadBalancerClient loadBalancer;
@RequestMapping("/commen/list")
// @HystrixCommand(fallbackMethod = "callFallback")
public String list2(){
System.out.println("这是原来的");
ServiceInstance serviceInstance = loadBalancer.choose("EUREKA-PROVIDER");
System.out.println("服务地址:" + serviceInstance.getUri());
System.out.println("服务名称:" + serviceInstance.getServiceId());
String callServiceResult = new RestTemplate().getForObject(serviceInstance.getUri().toString() + "/commen/list", String.class);
System.out.println(callServiceResult);
return "来了";
}
//这个是通过注入对象实现的
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
consummer启动类 其他的启动类没有什么不同