SpringCloudは、フォールバックの最初の経験を装います
マイクロSpringCloudサービスフレームワークでは、ふりは非常に重要と共通の構成要素の一つです。装うは、私たちはHTTP APIを呼び出すために、より便利にすることができ、宣言、テンプレートベースのHTTPクライアントです。本論文では、定着メカニズムフォールバック装うための簡単な紹介。フォールバックは、主に依存サービスが利用できない解決したり、サービスに障害が発生したか、タイムアウトが、デフォルトの戻り値を使用して呼び出すために使用されています。
装うの導入1。
POMの依存関係
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> <version>1.4.7.RELEASE</version> </dependency>
アプリケーションノートの増加起動クラス
@SpringBootApplication(scanBasePackages = {"com.xiaoqiang.feigncomsumer"}) @EnableFeignClients(basePackages = {"com.xiaoqiang.feigncomsumer"}) @EnableEurekaClient public class FeigncomsumerApplication { public static void main(String[] args) { SpringApplication.run(FeigncomsumerApplication.class, args); } }
インタフェースクラス構成
@FeignClient(name = "${feign.provider}",path = "/feignprovider") @Component public interface StudentClient { @GetMapping("/stud/getStudentList") List<Student> getStudentList(@RequestParam(required = false,name = "name") String name); }
2.Fallback設定
- フォールバッククラス
ここで注意すべきことの一つは、値ではつまり、URLを@RequestMapping、URL内のインターフェイスクラスを好きではないということです。URLは、次の2つの方法にマッピングすることができませんので。
@Component
@RequestMapping("fallback/")
public class FallBackStudentClient implements StudentOtherClient {
@Override
public Student getStudent(String name) {
Student student = new Student();
student.setAge(0);
student.setName("fall back test");
return student;
}
}
インターフェイスクラス
フォールバッククラス@FeignClient注釈パラメータで指定された、と@Componentコメントが必要です。
@Component
@FeignClient(name = "${feign.provider}",path = "/feignprovider"
,fallback = FallBackStudentClient.class)
public interface StudentOtherClient {
@GetMapping("/stud/getStudent")
Student getStudent(@RequestParam(required = false, name = "name") String name);
}
オープンHystrixヒューズ機能
でHystrix設定bootstrap.ymlを増やします。どのHystrixデフォルトのタイムアウト時間は1秒です。
feign: name: MFRAMEWORK-PROVIDER provider: feignprovider ##开启Hystrix断路器 hystrix: enabled: true
これは、フォールバックのすべてFigen初体験です。
demo地址:https://github.com/lanxuan826/sample-library/tree/master/feigndemo-fallback
PS:テストプロセスで問題が発生し、示されたエラー内容。
理由:@FeignClient(「同じサービス名」)複数のインターフェイス上では無効になっているオーバーライド、文句を言います。
ソリューション:
application.ymlのconfigureで:
spring
main: allow-bean-definition-overriding: true