Sentinel异步调用支持方式定义资源

Posted java1234_小锋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sentinel异步调用支持方式定义资源相关的知识,希望对你有一定的参考价值。

完整目录清单页面(必看)

Sentinel 支持异步调用链路的统计。在异步调用中,需要通过 SphU.asyncEntry(xxx) 方法定义资源,并通常需要在异步的回调函数中调用 exit 方法。

第一步:启动类加注解@EnableAsync,让项目支持异步调用支持

@SpringBootApplication
@EnableAsync
public class SentinelHelloWorldApplication {

    public static void main(String[] args) {
        SpringApplication.run(SentinelHelloWorldApplication.class,args);
    }
}

第二步:创建AsyncService异步调用类以及方法

package com.java1234.service;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * @author java1234_小锋
 * @site www.java1234.com
 * @company Java知识分享网
 * @create 2021-05-27 13:18
 */
@Service
public class AsyncService {

    @Async
    public void doSomethingAsync(){
        System.out.println("async start...");
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("async end...");
    }
}

第三步:创建Controller方法

@RequestMapping("helloWorld4")
public void helloWorld4(){
	AsyncEntry asyncEntry =null;
	try {
		asyncEntry = SphU.asyncEntry("helloWorld4");
		asyncService.doSomethingAsync();
	} catch (BlockException e) {
		System.out.println("系统繁忙,请稍后!");
	}finally {
		if(asyncEntry!=null){
			asyncEntry.exit();
		}
	}
}

第四步:Sentinel控制台新增流控规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SWkUoVmA-1622179693328)(image-20210527154900301.png)]

第五步:测试

浏览器请求:http://localhost/helloWorld4

正常访问控制台输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pY64Xf2r-1622179693335)(image-20210527155009805.png)]

频繁访问控制台输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CP1hy1Du-1622179693341)(image-20210527155020592.png)]

微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

以上是关于Sentinel异步调用支持方式定义资源的主要内容,如果未能解决你的问题,请参考以下文章

Sentinel返回布尔值方式定义资源

Sentinel注解方式定义资源

Spring Cloud gateway 七 Sentinel 注解方式使用

Sentinel限流与熔断分析

hystrix与sentinel的区别你懂没?

微服务之间的通讯安全-Sentinel入门之注解及熔断降级