- A+
所属分类:Sentinel
这两天使用Sentinel时遇到一个问题是,用Sentinel的管理界面里加的限制规则是可以成功限流,但是限流时出的是默认的错误消息,而我想用自定义的消息,于是使用了@SentinelResource注解,定义了blockHandler方法。但问题是死活进不了这个方法,也就输出不了我自定义的消息。
百度了很多教程,后来按照一篇教程里用纯代码的方式来新建限流规则发现是可以进入blockHandler方法,输出自定义的消息的。。
这个就有点无语了,然后看到Sentinel的管理界面里显示出了我用代码建的规则,最后我仔细对比后发现了问题所在。
原因是新建规则的资源名不同。
如图可以看到,Sentinel的管理界面里是以树型结构列出所有的接口,在最顶层或最里面的接口都可以定义限流。而我当时就是在顶层/echo/sdsf上新建的规则,所以资源名是/echo/sdsf。用代码建的是资源名则是echo。而函数里@SentinelResource注解声明的资源是echo。所以限流规则里的资源名必须和@SentinelResource注解声明的资源一致才能进入自定义的blockHandler方法。。