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控制台新增流控规则
第五步:测试
浏览器请求:http://localhost/helloWorld4
正常访问控制台输出:
频繁访问控制台输出:
微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。
以上是关于Sentinel异步调用支持方式定义资源的主要内容,如果未能解决你的问题,请参考以下文章