@Component
public class ServiceBlockExceptionHandler implements BlockExceptionHandler {
@Override
public void handle(HttpServletRequest request,
HttpServletResponse response,
BlockException e) throws Exception {
//response.setStatus(601);
//设置响应数据的编码
response.setCharacterEncoding("utf-8");
//告诉客户端要响应的数据类型以及客户端以什么编码呈现数据
response.setContentType("text/html;charset=utf-8");
PrintWriter pw=response.getWriter();
Map map=new HashMap<>();
if(e instanceof DegradeException){//降级、熔断
map.put("status",601);
map.put("message", "服务被熔断了!");
}else if(e instanceof FlowException){
map.put("status",602);
map.put("message", "服务被限流了!");
}else{
map.put("status",603);
map.put("message",
"Blocked by Sentinel (flow limiting)");
}
//将map对象转换为json格式字符串
String jsonStr=new ObjectMapper().writevalueAsString(map);
pw.println(jsonStr);
pw.flush();
}
}