springboot+feign+ribbon+hystrix 사용 가능 한 클 라 이언 트 api 접근 구축
15684 단어 SpringBootSpingCloud
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);
}
}
/**
* 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));
}
}
/**
*
* 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"," ");
}
}
}
/**
* springboot feign ribbon hystrix
*/
@SpringBootApplication
@EnableFeignClients
public class SpringBootFeignRibbonHystrixApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootFeignRibbonHystrixApplication.class, args);
}
}
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 주소 가 잘못 설정 되면 퓨즈 메커니즘 이 실 행 됩 니 다.
소스 코드
원본 코드 다운로드
레 퍼 런 스
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.