在上一篇文章《微服务实战spring cloud tencent系列(十)实战Spring Cloud Tencent Polaris 服务限流》里面我们实战演示了一下使用北极星(Polaris)实现服务限流的案例,在最后的演示中,我们可以看到当服务限流的时候,访问服务会显示:
The request is denied by rate limit because the throttling threshold is reached
在实际的业务中,我们其实是希望这里的返回内容和真实的业务中的response是一样的,例如:
{ "errorCode": 501, "errorMg": "当前服务请求繁忙,请稍候重试", "data": null }
所以这里我们能否修改这里的返回信息呢?答案是可以的,只需要在配置文件中配置这两项即可:
spring.cloud.polaris.ratelimit.rejectRequestTips spring.cloud.polaris.ratelimit.rejectHttpCode
所以这里我们来测试下,在user-service的bootstrap.yml文件中配置信息如下:
spring: application: name: user-service cloud: polaris: address: grpc://192.168.31.218:8091 namespace: shop config: address: grpc://192.168.31.218:8093 # 选填,只有在配置中心和注册中心是两个不同的地址时才需要配置 auto-refresh: true # 选填,当配置发布后,动态刷新 Spring 上下文,默认值为 true ratelimit: rejectHttpCode: 200 #自定义拒绝请求响应的 Http 状态码 rejectRequestTips: "{\"errorCode\":501,\"errorMg\":\"当前服务请求繁忙,请稍候重试\",\"data\":null}" #自定义拒绝请求响应的文本内容
配置完毕之后,我们再把user-service给启动起来,然后测试下访问:
可以看到返回了我们自定义的json数据了。最终实现了我们这里的自定义限流返回内容。
备注:
1、这里的话我们使用rejectRequestTips,那么后面的应该是一个字符串,必须要要使用""英文的引号给引入进来,如果没有引号,则配置内容会不生效。
2、这里除了自定义内容的话,还可以配置:spring.cloud.polaris.ratelimit.rejectRequestTipsFilePath:aaa.html这种方式。这样错误的话,会重定向到对应的html页面。
最后按照惯例,附上本案例的源码,登录后即可下载:
还没有评论,来说两句吧...