Heim >Java >javaLernprogramm >Beispielcodeanalyse für Java @SentinelResource
Modul: cloudalibaba-sentinel-service8401
pom neue Abhängigkeit
<dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity --> <groupId>com.atguigu.springcloud</groupId> <artifactId>cloud-api-common</artifactId> <version>${project.version}</version> </dependency>
Diese Abhängigkeit stammt aus Ihrer eigenen Vorlage. Diese Abhängigkeit hier ist Teil der Geschäftsverarbeitung von Datenbankabfragen
Neu Controller
@RestController public class RateLimitController { @GetMapping("/byResource") @SentinelResource(value = "byResource",blockHandler = "handleException") public CommonResult byResource() { return new CommonResult(200,"按资源名称限流测试OK",new Payment(2020L,"serial001")); } public CommonResult handleException(BlockException exception) { return new CommonResult(444,exception.getClass().getCanonicalName()+"\t 服务不可用"); } }
Grafikkonfiguration und Codebeziehung
bedeutet, dass die Anzahl der Abfragen in 1 Sekunde größer als 1 ist, also gehen wir zu unserem benutzerdefinierten Fluss und begrenzen den Fluss
Test 1
Klicken Sie auf 1 in 1 Sekunde Weiter, OK
Oben überschritten, wie verrückt geklickt und die selbst definierten aktuellen Begrenzungsverarbeitungsinformationen zurückgegeben URL zur Begrenzung des Stroms, Sentinel wird zurückgegeben. Kommt mit standardmäßigen Verarbeitungsinformationen zur Strombegrenzung.
Controller geändert zu:
@RestController public class RateLimitController { @GetMapping("/byResource") @SentinelResource(value = "byResource",blockHandler = "handleException") public CommonResult byResource() { return new CommonResult(200,"按资源名称限流测试OK",new Payment(2020L,"serial001")); } public CommonResult handleException(BlockException exception) { return new CommonResult(444,exception.getClass().getCanonicalName()+"\t 服务不可用"); } @GetMapping("/rateLimit/byUrl") @SentinelResource(value = "byUrl") public CommonResult byUrl() { return new CommonResult(200,"按url限流测试OK",new Payment(2020L,"serial002")); } }Test 2Einmal besuchenhttp://localhost:8401/rateLimit/byUrlNormal
Klicken Sie wie verrückt auf http:// localhost:8401/rateLimit/byUrl
, um die aktuellen, einschränkenden Verarbeitungsergebnisse von Sentinel zurückzugeben Anforderungen.
2 Entsprechend den bestehenden Bedingungen ist unsere individuelle Verarbeitungsmethode mit dem Geschäftscode gekoppelt, was nicht intuitiv ist.
3 Wenn jeder Geschäftsmethode ein Cover hinzugefügt wird, wird die Code-Aufblähung zunehmen.
4 Die globale einheitliche Verarbeitungsmethode wird nicht widergespiegelt. Kundendefinierte strombegrenzende VerarbeitungslogikErstellen Sie die CustomerBlockHandler-Klasse zum Anpassen der strombegrenzenden Verarbeitungslogik.Nach dem Testen haben wir sie angepasst. Fügen Sie der Steuerklasse ein neues Geschäft hinzublockHandlerClass = CustomerBlockHandler.class
Test Endlich haben wir es angepasst
Das obige ist der detaillierte Inhalt vonBeispielcodeanalyse für Java @SentinelResource. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!