Rumah > Java > javaTutorial > Analisis kod contoh Java @SentinelResource

Analisis kod contoh Java @SentinelResource

WBOY
Lepaskan: 2023-05-05 13:31:16
ke hadapan
1321 orang telah melayarinya

Hadkan aliran mengikut nama sumber dan tambahkan pemprosesan seterusnya

Modul: cloudalibaba-sentinel-service8401

pom pergantungan baharu

  <dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-common</artifactId>
            <version>${project.version}</version>
        </dependency>
Salin selepas log masuk

Pergantungan ini datang daripada templat anda sendiri, di sini Kebergantungan ini adalah sebahagian daripada pemprosesan perniagaan pertanyaan pangkalan data

Tambah Pengawal

@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 服务不可用");
    }
}
Salin selepas log masuk

Analisis kod contoh Java @SentinelResource

Konfigurasi grafik dan hubungan kod

Analisis kod contoh Java @SentinelResource

bermakna bilangan pertanyaan dalam 1 saat lebih besar daripada 1, jadi kami pergi ke aliran tersuai kami, hadkan aliran

Ujian 1

Klik 1 kali dalam 1 saat , OK

Melebihi di atas, diklik seperti orang gila, mengembalikan maklumat pemprosesan pengehad semasa yang ditentukan sendiri, pengehadan semasa berlaku

Analisis kod contoh Java @SentinelResource

Mengikut pengehadan semasa alamat Url dan pemprosesan seterusnya

Menghadkan arus melalui URL yang diakses akan mengembalikan maklumat pemprosesan pengehad semasa lalai Sentinel sendiri

Pengawal diubah suai kepada:

@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"));
    }
}
Salin selepas log masuk

Ujian 2

Lawati sekali

http://localhost:8401/rateLimit/byUrl

Biasa

Analisis kod contoh Java @SentinelResource

Klik gila http://localhost: 8401/rateLimit/ byUrl

Analisis kod contoh Java @SentinelResource

akan mengembalikan hasil pemprosesan pengehad semasa Sentinel sendiri

Masalah yang dihadapi oleh penyelesaian di atas

1 lalai Sistem, tidak Mencerminkan keperluan perniagaan kita sendiri.

2 Mengikut syarat sedia ada, kaedah pemprosesan tersuai kami digabungkan dengan kod perniagaan, yang tidak intuitif.

3 Jika penutup ditambahkan pada setiap kaedah perniagaan, pertambahan kod akan meningkat.

4 Kaedah pemprosesan bersatu global tidak ditunjukkan.

Logik pemprosesan pengehad semasa yang ditentukan pelanggan

Buat kelas CustomerBlockHandler untuk menyesuaikan logik pemprosesan pengehad semasa

Selepas ujian, kami menyesuaikannya

Tambah baharu perniagaan kepada kelas kawalan

  @GetMapping("/rateLimit/customerBlockHandler")
    @SentinelResource(value = "customerBlockHandler",
            blockHandlerClass = CustomerBlockHandler.class, blockHandler = "handleException2")
    public CommonResult customerBlockHandler()
    {
        return new CommonResult(200,"按客户自定义限流处理逻辑");
    }
Salin selepas log masuk

Sesuaikan logik pemprosesan mengehadkan arus umum

blockHandlerClass = CustomerBlockHandler.class

blockHandler = handleException2

Ujian 3

Analisis kod contoh Java @SentinelResource

Analisis kod contoh Java @SentinelResource

Kami menyesuaikannya selepas ujian

Analisis kod contoh Java @SentinelResource

Atas ialah kandungan terperinci Analisis kod contoh Java @SentinelResource. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan