springcloud中Feign服务器调用-Feign与熔断Hystrix配置讲解

1>.Feign的作用:

减少负载(ribbon)与熔断(Hystrix)的配置,用于管理调用服务器。

代替了RestTemplate。

2>.配置:

1.引入pom.xml坐标

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

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

对应的controller的接口方法。

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默认关闭熔断)在application.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);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿联爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值