兴安网站建设,超全的开源建站系统大全,wordpress 批量 发布,wordpress 修改路径Spring Cloud OpenFeign#xff1a;基于Ribbon和Hystrix的声明式服务调用 Spring Cloud OpenFeign是一个声明式的服务调用框架#xff0c;基于Feign并整合了Ribbon和Hystrix#xff1b;目标是简化分布式系统中编写服务间调用的代码#xff0c;并提供一种更加优雅和便捷的方…Spring Cloud OpenFeign基于Ribbon和Hystrix的声明式服务调用 Spring Cloud OpenFeign是一个声明式的服务调用框架基于Feign并整合了Ribbon和Hystrix目标是简化分布式系统中编写服务间调用的代码并提供一种更加优雅和便捷的方式来进行服务之间的通信 创建feign-service模块 依赖导入 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix -eureka-client/artifactId
/dependency
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependencyapplication.yml配置 server:port: 8701
spring:application:name: feign-service
eureka:client:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://localhost:8001/eureka/启动类上添加EnableFeignClients注解来启用Feign的客户端功能 EnableFeignClients
EnableDiscoveryClient
SpringBootApplication
public class FeignServiceApplication {public static void main(String[] args) {SpringApplication.run(FeignServiceApplication.class, args);}
}添加UserService接口完成对user-service服务的接口绑定 FeignClient(value user-service)
public interface UserService {PostMapping(/user/create)CommonResult create(RequestBody User user);GetMapping(/user/{id})CommonResultUser getUser(PathVariable Long id);
} 添加UserFeignController调用UserService实现服务调用 RestController
RequestMapping(/user)
public class UserFeignController {Autowiredprivate UserService userService;PostMapping(/create)public CommonResult create(RequestBody User user) {return userService.create(user);}GetMapping(/{id})public CommonResult getUser(PathVariable Long id) {return userService.getUser(id);}
}Feign中的服务降级 微服务架构中服务降级是一种应对高并发或系统故障的策略用于保证系统的可用性和稳定性Feign是一个声明式的Web服务客户端可以与Spring Cloud等微服务框架集成简化服务之间的调用 添加服务降级实现类UserFallbackService Component
public class UserFallbackService implements UserService {Overridepublic CommonResult create(User user) {User defaultUser new User(-1L, defaultUser, 123456);return new CommonResult(defaultUser);}Overridepublic CommonResultUser getUser(Long id) {User defaultUser new User(-1L, defaultUser, 123456);return new CommonResult(defaultUser);}Overridepublic CommonResultUser getByUsername(String username) {User defaultUser new User(-1L, defaultUser, 123456);return new CommonResult(defaultUser);}Overridepublic CommonResult update(User user) {return new CommonResult(调用失败服务被降级,500);}Overridepublic CommonResult delete(Long id) {return new CommonResult(调用失败服务被降级,500);}
}修改UserService接口设置服务降级处理类为UserFallbackService FeignClient(value user-service,fallback UserFallbackService.class)
public interface UserService {
}修改application.yml开启Hystrix功能 feign:hystrix:enabled: true #在Feign中开启Hystrix日志打印功能 Feign提供了日志打印功能我们可以通过配置来调整日志级别从而了解Feign中Http请求的细节 日志级别 NONE默认的不显示任何日志BASIC仅记录请求方法、URL、响应状态码及执行时间HEADERS除了BASIC中定义的信息之外还有请求和响应的头信息FULL除了HEADERS中定义的信息之外还有请求和响应的正文及元数据 通过配置开启更为详细的日志 通过java配置来使Feign打印最详细的Http请求日志信息 Configuration
public class FeignConfig {BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL;}
}application.yml中配置需要开启日志的Feign客户端配置UserService的日志级别为debug logging:level:com.macro.cloud.service.UserService: debugFeign的常用配置
feign:hystrix:enabled: true #在Feign中开启Hystrixcompression:request:enabled: false #是否对请求进行GZIP压缩mime-types: text/xml,application/xml,application/json #指定压缩的请求数据类型min-request-size: 2048 #超过该大小的请求会被压缩response:enabled: false #是否对响应进行GZIP压缩
logging:level: #修改日志级别com.macro.cloud.service.UserService: debug