マイクロサービスのセンチネル電流制限サーキットブレーカー(1)-SpringMVCカスタムURL電流制限例外

デフォルトでは、URLは現在の制限がトリガーされた直後に返されます。

Blocked by Sentinel(flow limiting)

実際のアプリケーションでは、ほとんどのデータがJSON形式であるため、現在の制限をトリガーした後に戻り結果フォームを変更する場合は、現在の制限の例外をカスタマイズして処理し、UrlBlockHandlerを実装して、ブロックされたメソッドを書き直すことができます。

package xxx;

import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.http.MediaType;

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

@Component
public class CustomUrlBlockHandler implements BlockExceptionHandler {
    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response,
                       BlockException ex) throws Exception {
        response.setHeader("Content-Type", MediaType.APPLICATION_JSON_UTF8_VALUE);
        String message = "{\"code\":999,\"msg\":\"访问人数过多\"}";
        response.getWriter().write(message);
    }
}

もう1つのシナリオは、現在の制限がトリガーされたときに、ToBアプリケーションの場合、劣化したページに直接ジャンプすることを望んでいることです。これは、次の構成で実現できます。

spring.sentinel.servlet.block-page.url={url}

おすすめ

転載: blog.csdn.net/weixin_39195030/article/details/112726073