OpenFeign 定义后备工厂进行服务降级可以使得远程接口调用失败时进行降级处理,而不会直接报错,影响后续代码逻辑。定义后备工厂的步骤如下:
-
远程接口处定义。
@FeignClient(value = ServiceConstants.SYSTEM, fallbackFactory = RemoteFileFallbackFactory.class) public interface RemoteFileService {/*** 使文件生效* @param id 文件ID* @return 结果*/@PutMapping("file/enable/{id}")BaseResult<Boolean> enable(@PathVariable("id") Long id); }
-
定义后备工厂。
@Slf4j @Component public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService> {@Overridepublic RemoteFileService create(Throwable cause) {log.error("远程文件服务:{}", cause.getMessage());return new RemoteFileService() {@Overridepublic BaseResult<Boolean> enable(Long id) {return BaseResult.fail();}};} }
-
自动导入后备工厂。
在
resource/META-INF/spring
下的org.springframework.boot.autoconfigure.AutoConfiguration.imports
中进行定义:
com.sevnce.base.api.service.system.factory.RemoteFileFallbackFactory