デフォルトでは、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}