Open 1416360754 opened 4 years ago
import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate;
@RestController public class MyController {
@Value("${service-url}")
private String url;
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/port")
@SentinelResource(value = "port1", blockHandler = "blockHandler")
public int port() {
Integer port = restTemplate.getForObject(url + "/port", Integer.class);
return port != null ? port : 10086;
}
@RequestMapping("/data")
public String data() {
return restTemplate.getForObject(url + "/data", String.class);
}
public int blockHandler(BlockException exception) {
return 1;
}
}
Java 17, SpringBoot 3.2.6, SpringCloud 2023.0.1.0, Sentinel 1.8.6, MacOS 14.5 m1 未复现
代码:
流控规则: 资源名 来源应用 流控模式 阈值类型 阈值 阈值模式 流控效果 port1 default 直接 QPS 1 单机 快速失败
偶尔也会出现这种情况:
偶尔呗正常限流返回1