springboot+feign+ribbon+hystrix 사용 가능 한 클 라 이언 트 api 접근 구축

15684 단어 SpringBootSpingCloud
spring-boot-feign-ribbon-hystrix
springboot 에서 feign,ribbon,hystrix 조합 기능 을 사용 하여 사용 가능 한 외부 api 접근 을 구축 합 니 다.
feign,ribbon,hystrix 에 대응 하 는 의존 도 를 추가 합 니 다.
springboot 1.5.15+Dalston.SR4 버 전 의존
    
        
            org.springframework.cloud
            spring-cloud-starter-feign
        
        
            org.springframework.cloud
            spring-cloud-starter-ribbon
        
        
            org.springframework.cloud
            spring-cloud-starter-hystrix
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring.cloud.version}
                pom
                import
            
        
    

springboot 2.1.0+Greenwich.M1 버 전 의존

        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-hystrix
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-ribbon
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

        
            com.alibaba
            fastjson
            1.2.49
        
        
            org.projectlombok
            lombok
            1.16.22
            compile
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

테스트 용 사용자 인터페이스 작성
  • 사용자 액세스 인터페이스
  • @RestController
    @Slf4j
    public class UserController {
    
        @RequestMapping(value = "/getUser", method = RequestMethod.POST)
        public Map<String, Object> getUser(@RequestBody Map<String, Object> params, HttpServletRequest request) {
            log.info("  ip:{},     :{}", request.getRemoteAddr(), JSON.toJSONString(params));
            Integer id = (Integer) params.getOrDefault("id", 1);
            return ImmutableMap.of("id", id, "name", "xiaoming", "age", 19);
        }
    
    }
    
  • feign 테스트 인터페이스
  • /**
     * 

    fegin test

    * Created by @author [email protected] on 2018/11/2. */
    @RestController @Slf4j public class FeignController { @Autowired private UserClient userClient; @RequestMapping(value = "/getUser/{id}", method = RequestMethod.GET) public Map<String, Object> getUser(@PathVariable Integer id){ log.info(" getUser id:{}",id); return userClient.getUser(ImmutableMap.of("id", id)); } }
  • feign 방문 사용자 api 인터페이스 작성
  • /**
     * 

    * Created by @author [email protected] on 2018/11/2. */
    @FeignClient(name = "user", fallback = UserClient.UserFallback.class) @RibbonClient(name = "user") public interface UserClient { /** * * @param data * @return */ @RequestMapping(method = RequestMethod.POST, value = "/getUser", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE ) Map<String, Object> getUser(Map<String, Object> data); @Slf4j @Component class UserFallback implements UserClient { @Override public Map<String, Object> getUser(Map<String, Object> data) { log.error("fallback:" + JSON.toJSONString(data)); return ImmutableMap.of("code", -1, "msg"," "); } } }
  • feign 활성화 설정
  • 클래스 에 EnableFeignClient 설명 추가
    /**
     *  springboot   feign ribbon hystrix  
     */
    @SpringBootApplication
    @EnableFeignClients
    public class SpringBootFeignRibbonHystrixApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootFeignRibbonHystrixApplication.class, args);
        }
    }
    
  • ribbon 부하 균형 접근 설정
  • application.properties 에@RibbonClient(name="user"),@FeignClient(name="user")에 대응 하 는 user 설정 을 설정 하고 퓨즈 메커니즘 을 엽 니 다.
    feign.hystrix.enabled=true
    user.ribbon.listOfServers=http://192.168.97.120:8080,http://127.0.0.1:8080
    

    접근 요청
    요청 주소:http://127.0.0.1:8080/getUser/1돌아 가기:
    {
        "id": 1,
        "name": "xiaoming",
        "age": 19
    }
    

    콘 솔 인쇄 는 다음 과 같 습 니 다.ribbon 부하 균형 에 이 르 렀 고 ribbon 주소 가 잘못 설정 되면 퓨즈 메커니즘 이 실 행 됩 니 다.
    소스 코드
    원본 코드 다운로드
    레 퍼 런 스
  • multi_spring-cloud-feign
  • multi__circuit_breaker_hystrix_clients
  • multi_spring-cloud-ribbon
  • 좋은 웹페이지 즐겨찾기