1、POM配置

  和普通Spring Boot工程相比,添加了Eureka Client、Feign、Hystrix依赖和Spring Cloud依赖管理

<dependencies>
  <!--Eureka Client依赖-->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
  </dependency>
  <!--声明式服务消费-->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
  </dependency>
  <!-- 整合断路器hystrix,其实feign中自带了hystrix,引入该依赖主要是为了使用其中的hystrix-metrics-event-stream,用于dashboard -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
  </dependency>
  <!-- 服务健康检查,必须添加,否则此服务不会启动hystrix.stream -->   <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-actuator</artifactId>   </dependency> </dependencies> <!--Spring Cloud依赖版本管理--> <dependencyManagement>   <dependencies>     <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-dependencies</artifactId>       <version>Dalston.SR1</version>       <type>pom</type>       <scope>import</scope>     </dependency>   </dependencies> </dependencyManagement>

02、使能

@SpringBootApplication
@EnableFeignClients  //声明式服务消费
@EnableCircuitBreaker  //断路器
@EnableEurekaClient  //Eureka客户端 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

03、src/main/resources工程配置文件 application.yml

server:
  port: 3010
spring:
  application:
    name: feign-hello-service-consumer
eureka:
  client:
    serviceUrl:
      defaultZone: http://discovery:1000/eureka/
feign:
  hystrix:
    enabled: true  #在新版本Feign中,hystrix默认关闭,必须手动打开

04、声明式服务消费

@FeignClient(name = "hello-service-provider", fallback = HelloFallback.class)
public interface HelloFeignService {
    @RequestMapping("/hello")
    public String hello();

}

@Component
class HelloFallback implements HelloFeignService {

    @Override
    public String hello() {
        return "Error";
    }
}

05、Controller

@RestController
public class FeignController {
    @Autowired
    private HelloFeignService helloService;

    @GetMapping("feign")
    public String hello() {
    return this.helloService.hello(); } }
posted on 2017-08-02 13:27  TBBS  阅读(267)  评论(0编辑  收藏  举报