Signed-off-by: Eric Zhao <sczyh16@gmail.com> |
||
|---|---|---|
| .. | ||
| src | ||
| README.md | ||
| pom.xml | ||
README.md
Sentinel Annotation AspectJ
This extension is an AOP implementation using AspectJ for Sentinel annotations. Currently only runtime waving is supported.
Annotation
The @SentinelResource annotation indicates a resource definition, including:
value: Resource name, required (cannot be empty)entryType: Resource entry type (inbound or outbound),EntryType.OUTby defaultfallback: Fallback method when degraded (optional). The fallback method should be located in the same class with original method. The signature of the fallback method should match the original method (parameter types and return type).blockHandler: Handler method that handlesBlockExceptionwhen blocked. The signature should match original method, with the last additional parameter typeBlockException. The block handler method should be located in the same class with original method by default. If you want to use method in other classes, you can set theblockHandlerClasswith correspondingClass(Note the method in other classes must be static).exceptionsToTrace: List of business exception classes to trace and record (since 1.5.1).
For example:
@SentinelResource(value = "abc", fallback = "doFallback", blockHandler = "handleException")
public String doSomething(long i) {
return "Hello " + i;
}
public String doFallback(long i) {
// Return fallback value.
return "Oops, degraded";
}
public String handleException(long i, BlockException ex) {
// Handle the block exception here.
return null;
}
Configuration
AspectJ
If you are using AspectJ directly, you can add the Sentinel annotation aspect to
your aop.xml:
<aspects>
<aspect name="com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect"/>
</aspects>
Spring AOP
If you are using Spring AOP, you should add a configuration to register the aspect as a Spring bean:
@Configuration
public class SentinelAspectConfiguration {
@Bean
public SentinelResourceAspect sentinelResourceAspect() {
return new SentinelResourceAspect();
}
}
An example for using Sentinel Annotation AspectJ with Spring Boot can be found here.