All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.onestop.common.sentinel.handler.OsBlockHandler Maven / Gradle / Ivy

The newest version!
/*
 *
 *  * Copyright (c) 2021 os-parent Authors. All Rights Reserved.
 *  *
 *  * Licensed under the Apache License, Version 2.0 (the "License");
 *  * you may not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  *
 *  *     http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  * Unless required by applicable law or agreed to in writing, software
 *  * distributed under the License is distributed on an "AS IS" BASIS,
 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  * See the License for the specific language governing permissions and
 *  * limitations under the License.
 *
 */

package com.onestop.common.sentinel.handler;

import cn.hutool.http.ContentType;
import cn.hutool.json.JSONUtil;
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
import com.onestop.common.core.util.Res;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * sentinel统一降级限流策略
 * 

* {@link com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.DefaultBlockExceptionHandler} * * @author Clark * @version 2021-07-19 */ @Slf4j public class OsBlockHandler implements BlockExceptionHandler { @Override public void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws Exception { log.error("sentinel降级 资源名称{}", e.getRule().getResource(), e); response.setContentType(ContentType.JSON.toString()); //服务限流 if (e instanceof FlowException) { log.error("-------服务限流,请稍后再试--------"); Res res = Res.failed(HttpStatus.TOO_MANY_REQUESTS.value(), HttpStatus.TOO_MANY_REQUESTS.getReasonPhrase()); response.setStatus(HttpStatus.TOO_MANY_REQUESTS.value()); response.getWriter().print(JSONUtil.toJsonStr(res)); } //服务降级 else if (e instanceof DegradeException) { log.error("-------服务降级,请稍后再试--------"); Res res = Res.failed(HttpStatus.SERVICE_UNAVAILABLE.value(), HttpStatus.SERVICE_UNAVAILABLE.getReasonPhrase()); response.setStatus(HttpStatus.SERVICE_UNAVAILABLE.value()); response.getWriter().print(JSONUtil.toJsonStr(res)); } else { log.error("-------OsBlockHandler 未知--------" + e); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy