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
网友评论