如果不使用annotation,需要自己进行一系列判断,如block后的处理,原始函数调用失败的处理等等,可以参看public class SentinelResourceAspect的public Object invokeResourceWithSentinel方法,而sentinel 基于aspectJ实现的annotation可以简化这些操作,简单总结如下
- blockHandler及fallback(exception handler)函数的参数定义都是比原始函数多一个throw
- 建议尽量不要使用defaultfall
- 可以通过blockHandlerClass及fallbackClass将handler方法与原始函数分离到不同类中,分离模式下方法必须为static,非分离不要求static
- 注意如何没有定义blockhandler,那么会使用fallback或者defaultfallback