1. Feign应用
Feign的作用;使用Feign实现consumer-demo代码中调用服务
- 导入启动器依赖;
- 开启Feign功能;
- 编写Feign客户端;
- 编写一个处理器ConsumerFeignController,注入Feign客户端并使用;
- 测试
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
@SpringCloudApplication
@EnableFeignClients
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate get()
{
return new RestTemplate();
}
}
@FeignClient("user-service")
public interface UserClient {
@GetMapping("/user/{id}")
User get(@PathVariable long id);
}
@RestController
@RequestMapping("/cf")
public class ConsumerFeignController {
@Autowired
private UserClient userClient;
@GetMapping("/{id}")
public User get(@PathVariable long id)
{
return userClient.get(id);
}
}
Feign主要作用:自动根据参数拼接http请求地址。
2. Feign负载均衡及熔断
目标:可以配置Feign内置ribbon配置项和Hystrix熔断的Fallback配置
分析:
- 负载均衡
- 服务熔断
- 请求压缩
- 日志级别
ribbon:
ConnectTimeout: 1000 # 连接超时时长
ReadTimeout: 2000 # 数据通信超时时长
MaxAutoRetries: 0 # 当前服务器的重试次数
MaxAutoRetriesNextServer: 0 # 重试多少次服务
OkToRetryOnAllOperations: false # 是否对所有的请求方式都重试
feign:
hystrix:
enabled: true # 开启Feign的熔断功能
compression:
request:
enabled: true # 开启请求压缩
mime-types: text/html,application/xml,application/json # 设置压缩的数据类型
min-request-size: 2048 # 设置触发压缩的大小下限
response:
enabled: true
logging:
level:
com.gogo: debug
@Component
public class UserClientFallback implements UserClient{
@Override
public User get(long id) {
User user = new User();
user.setId(id);
user.setName("异常用户");
return user;
}
}
@Configuration
public class FeignConfig {
@Bean
Logger.Level logLevel()
{
return Logger.Level.FULL;
}
}
@FeignClient(value = "user-service",fallback = UserClientFallback.class,configuration = FeignConfig.class)
public interface UserClient {
@GetMapping(