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> { @Override public RemoteFileService create(Throwable cause) { log.error("遠端檔案服務:{}", cause.getMessage()); return new RemoteFileService() { @Override public 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