SpringBoot溶断
1874 ワード
最近SpringBootの溶断メカニズムを使っていますが、詳しいdemoは以下の通りです.本人も初めて書きますが、具体的な原理的なものもよくわかりません.ここではその使い方や注意点を簡単に紹介します.一度にテストに成功してほしいです.
demoコードは以下の通りです
まず起動クラスに注記を追加@EnableHystrixは溶断メカニズムの追加を示します
Controllerレイヤの特定のメソッドルーティングに@HystrixCommand(fallbackMethod="helloFallbackMethod")を追加すると、エラーまたはタイムアウト時にhelloFallbackMethodにジャンプします.例えばnum=0のコードでは、異常が放出され、溶断はhelloFallback Methodにジャンプします.Springbootのデフォルトのタイムアウト時間は1000 msで、コードのsleep(5000)も溶断しhelloFallback Methodにジャンプします.デフォルトのタイムアウトはアプリケーションで計算できます.ymlファイルには次のように構成するhystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000;ここでアプリケーションに追加します.ymlでいいです.3000 msのタイムアウトを表します.
次にhelloFallbackMethodメソッドを実装し、ここでhelloFallbackMethodのパラメータはルーティングメソッドのパラメータと一致しなければならない.
demoコードは以下の通りです
package com.example.demo;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by Lenovo on 2019/5/16.
*/
// @RestController @ResponseBody + @Controller 。
@RestController
public class HysController {
/* @HystrixCommand(fallbackMethod="helloFallbackMethod",commandProperties =
{@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds" , value = "10000")})*/
@HystrixCommand(fallbackMethod="helloFallbackMethod")
@GetMapping("/tt")
public String tt(@RequestParam(name = "num") int num) throws InterruptedException {
Thread.sleep(5000);
int a = 15 / num;
return "ok";
}
private String helloFallbackMethod(@RequestParam(name = "num") int num){
return "fall back";
}
}
まず起動クラスに注記を追加@EnableHystrixは溶断メカニズムの追加を示します
Controllerレイヤの特定のメソッドルーティングに@HystrixCommand(fallbackMethod="helloFallbackMethod")を追加すると、エラーまたはタイムアウト時にhelloFallbackMethodにジャンプします.例えばnum=0のコードでは、異常が放出され、溶断はhelloFallback Methodにジャンプします.Springbootのデフォルトのタイムアウト時間は1000 msで、コードのsleep(5000)も溶断しhelloFallback Methodにジャンプします.デフォルトのタイムアウトはアプリケーションで計算できます.ymlファイルには次のように構成するhystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000;ここでアプリケーションに追加します.ymlでいいです.3000 msのタイムアウトを表します.
次にhelloFallbackMethodメソッドを実装し、ここでhelloFallbackMethodのパラメータはルーティングメソッドのパラメータと一致しなければならない.