springcloud에서 Feign 서버 호출 - Feign 및 Hystrix 구성 해제 설명
3807 단어 springcloudspringboot
1>.Feign의 역할:
호출 서버를 관리하는 데 사용되는 부하(ribbon)와 퓨즈(Hystrix) 설정을 줄입니다.
RestTemplate 대신
2>.구성:
1.pom을 도입한다.xml 좌표
org.springframework.cloud
spring-cloud-starter-openfeign
2. 시작 클래스에 메모 @EnableFeignClients를 추가하여 Feign 서비스를 시작합니다.
3. 인터페이스를 만듭니다. 인터페이스에 @FeignClient(SERVICE-PROVIDER) 매개 변수를 서비스 이름으로 추가합니다.구체적인 방법은 controller의 방법과 비슷하다. *인터페이스를 바꾸는 방법은 서비스 측이 제공하는 인터페이스 방법입니다.
package alian.Interface;
import alian.domain.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;
@FeignClient("SERVICE-PROVIDER")
public interface UserControllerFeign{
@GetMapping("user/{id}")
public User findUserbyId(@PathVariable("id") int id);
}
대응하는 컨트롤러의 인터페이스 방법.
package alian.controller;
import alian.Interface.UserControllerFeign;
import alian.domain.User;
import com.netflix.appinfo.InstanceInfo;
import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework. web.client.RestTemplate;
import sun.security.jca.GetInstance;
import java.util.List;
@Controller
@RequestMapping("consumer/user")
public class ComsumorController {
@Autowired
private UserControllerFeign userControllerFeign;
@GetMapping("{id}")
@ResponseBody
public String findUserbyId(@PathVariable("id") int id)
{
/*
*
*
*
* 4. Feign
*
*
* */
return userControllerFeign.findUserbyId(id).toString();
}
}
3>.융단된 통합(Hystrix)
단계:
1. Feign 기본 해제 해제를 응용 프로그램에서 엽니다.yml 오픈 설정 수정
feign:
hystrix:
enabled: true
2. 상기 인터페이스를 실례화하고 IOC 용기에 추가합니다(@Component 추가).
package alian.Interface;
import alian.domain.User;
import org.springframework.stereotype.Component;
@Component
public class UserControllerFeignImpl implements UserControllerFeign {
@Override
public User findUserbyId(int id) {
User user = new User();
user.setName(" - ");
return user;
}
}
3. 인터페이스 위의 메모는 다음과 같이 변경됩니다.
@FeignClient(value = "SERVICE-PROVIDER",fallback = UserControllerFeignImpl.class)
예는 다음과 같습니다.
package alian.Interface;
import alian.domain.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;
@FeignClient(value = "SERVICE-PROVIDER",fallback = UserControllerFeignImpl.class)
public interface UserControllerFeign{
@GetMapping("user/{id}")
public User findUserbyId(@PathVariable("id") int id);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud에서 Feign에 대한 일반적인 질문 요약1. FeignClient 인터페이스, @GettingMapping 같은 조합 메모는 사용할 수 없음 코드 예: 이쪽 @RequestMapping(value = "/simple/{id}", method = Reque...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.