Heim > Java > javaLernprogramm > Beispielcodeanalyse für Java @SentinelResource

Beispielcodeanalyse für Java @SentinelResource

WBOY
Freigeben: 2023-05-05 13:31:16
nach vorne
1321 Leute haben es durchsucht

Fluss nach Ressourcennamen begrenzen und nachfolgende Verarbeitung hinzufügen

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>
Nach dem Login kopieren

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 服务不可用");
    }
}
Nach dem Login kopieren

Beispielcodeanalyse für Java @SentinelResource

Grafikkonfiguration und Codebeziehung

Beispielcodeanalyse für Java @SentinelResource

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: Beispielcodeanalyse für Java @SentinelResource

@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"));
    }
}
Nach dem Login kopieren
Test 2

Einmal besuchen

http://localhost:8401/rateLimit/byUrl

Normal

Klicken Sie wie verrückt auf http:// localhost:8401/rateLimit/byUrl

Beispielcodeanalyse für Java @SentinelResource, 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. Beispielcodeanalyse für Java @SentinelResource

4 Die globale einheitliche Verarbeitungsmethode wird nicht widergespiegelt.

Kundendefinierte strombegrenzende Verarbeitungslogik

Erstellen 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 hinzu

blockHandlerClass = CustomerBlockHandler.class

blockHandler = handleException2

Die obige Konfiguration: Suchen Sie die handleException2-Methode in der CustomerBlockHandler-Klasse für die Sicherungsverarbeitung und definieren Sie die allgemeine Strombegrenzungsverarbeitungslogik.

Test 3

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage