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);
}

좋은 웹페이지 즐겨찾기