美文网首页
SpringCloud那些事-Feign

SpringCloud那些事-Feign

作者: Dane_404 | 来源:发表于2019-12-02 23:37 被阅读0次

Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。

使用 Feign

消费者模块引入依赖:

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

启动类加入 @EnableFeignClients

@EnableFeignClients
@SpringCloudApplication
public class ConsumeApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumeApplication.class, args);
    }

}

编写 Feign 的客户端,@FeignClient 指定服务名

@FeignClient("user-service")
public interface UserFeignClient {

    @GetMapping("/user/hello")
    public String callHello();
}

然后使用,你会发现RestTemplate的注册被我删除了。Feign中已经自动集成了Ribbon负载均衡,因此我们不需要自己定义。RestTemplate了:

@RestController
public class ConsumeController {


    @Autowired
    private UserFeignClient userFeignClient;

    @GetMapping("/callhello")
    public String callHello(){

       return userFeignClient.callHello();
    }

}

Feign 整合 Hystix

打开 Hystix 支持:

feign.hystrix.enabled=true

编写Fallback类,实现 UserFeignClient

@Component
public class UserFeignFallClient implements UserFeignClient {

    @Override
    public String callHello(){
        return "Fegin 服务器错误";
    };
}

然后在UserFeignClient中,指定刚才编写的实现类

@FeignClient(value = "user-service",fallback = UserFeignFallClient.class)
public interface UserFeignClient {

    @GetMapping("/user/hello")
    public String callHello();
}

Feign 开启压缩

直接配置

# 开启请求压缩
feign.compression.request.enabled=true 
feign.compression.response.enabled=true 
feign.compression.request.mime-types=text/xml,application/xml,application/json
feign.compression.request.min-request-size=2048

相关文章

网友评论

      本文标题:SpringCloud那些事-Feign

      本文链接:https://www.haomeiwen.com/subject/agjqgctx.html