Search in sources :

Example 1 with SentinelWebInterceptor

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor in project Sentinel by alibaba.

the class InterceptorConfig method addSpringMvcInterceptor.

private void addSpringMvcInterceptor(InterceptorRegistry registry) {
    SentinelWebMvcConfig config = new SentinelWebMvcConfig();
    // Depending on your situation, you can choose to process the BlockException via
    // the BlockExceptionHandler or throw it directly, then handle it
    // in Spring web global exception handler.
    // config.setBlockExceptionHandler((request, response, e) -> { throw e; });
    // Use the default handler.
    config.setBlockExceptionHandler(new DefaultBlockExceptionHandler());
    // Custom configuration if necessary
    config.setHttpMethodSpecify(true);
    // By default web context is true, means that unify web context(i.e. use the default context name),
    // in most scenarios that's enough, and it could reduce the memory footprint.
    // If set it to false, entrance contexts will be separated by different URLs,
    // which is useful to support "chain" relation flow strategy.
    // We can change it and view different result in `Resource Chain` menu of dashboard.
    config.setWebContextUnify(true);
    config.setOriginParser(request -> request.getHeader("S-user"));
    // Add sentinel interceptor
    registry.addInterceptor(new SentinelWebInterceptor(config)).addPathPatterns("/**");
}
Also used : DefaultBlockExceptionHandler(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.DefaultBlockExceptionHandler) SentinelWebInterceptor(com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor) SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig)

Example 2 with SentinelWebInterceptor

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor in project learn-simple by muggle0.

the class SimpleWebmvcConfig method addInterceptors.

@Override
public void addInterceptors(InterceptorRegistry registry) {
    // 注冊sentinel 拦截器
    SentinelWebMvcConfig config = new SentinelWebMvcConfig();
    config.setHttpMethodSpecify(true);
    config.setWebContextUnify(true);
    config.setBlockExceptionHandler(new SimpleBlockExceptionHandler());
    registry.addInterceptor(new SentinelWebInterceptor(config)).addPathPatterns("/**");
}
Also used : SentinelWebInterceptor(com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor) SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig)

Example 3 with SentinelWebInterceptor

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor in project ddf-common by dongfangding.

the class SentinelAutoConfiguration method addSpringMvcInterceptor.

/**
 * 接口请求后会被拦截到控制台的---簇点链路上, 可以不适用@SentinelResource注解, 区别是, 如果接口调用链上没有生命是的@SentinelResource资源,
 * 那么就将最外层接口入口层(即方法的@RequestMapping)作为资源且不会往下生成资源链。而如果@RequestMapping方法调用了某个@SentinelResource资源,
 * 则会在入口层往下生成资源链路
 * <p>
 * 格式如下
 * 无资源映射
 * /helloA
 * <p>
 * 有资源映射
 * /helloB
 * -- hello(如果这个方法声明了@SentinelResource的话)
 *
 * @param registry
 */
private void addSpringMvcInterceptor(InterceptorRegistry registry) {
    SentinelWebMvcConfig config = new SentinelWebMvcConfig();
    // Depending on your situation, you can choose to process the BlockException via
    // the BlockExceptionHandler or throw it directly, then handle it
    // in Spring web global exception handler.
    // 将异常抛出去, 然后接管异常处理
    config.setBlockExceptionHandler((request, response, e) -> {
        throw e;
    });
    // Use the default handler.
    // config.setBlockExceptionHandler(new DefaultBlockExceptionHandler());
    // Custom configuration if necessary
    config.setHttpMethodSpecify(true);
    // By default web context is true, means that unify web context(i.e. use the default context name),
    // in most scenarios that's enough, and it could reduce the memory footprint.
    // If set it to false, entrance contexts will be separated by different URLs,
    // which is useful to support "chain" relation flow strategy.
    // We can change it and view different result in `Resource Chain` menu of dashboard.
    config.setWebContextUnify(true);
    config.setOriginParser(request -> request.getHeader("S-user"));
    // Add sentinel interceptor
    registry.addInterceptor(new SentinelWebInterceptor(config)).addPathPatterns("/**");
}
Also used : SentinelWebInterceptor(com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor) SentinelWebMvcConfig(com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig)

Example 4 with SentinelWebInterceptor

use of com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor in project Sentinel by alibaba.

the class InterceptorConfig method addSpringMvcInterceptor.

private void addSpringMvcInterceptor(InterceptorRegistry registry) {
    // Config
    SentinelWebMvcConfig config = new SentinelWebMvcConfig();
    config.setBlockExceptionHandler(new BlockExceptionHandler() {

        @Override
        public void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws Exception {
            String resourceName = e.getRule().getResource();
            // Depending on your situation, you can choose to process or throw
            if ("/hello".equals(resourceName)) {
                // Do something ......
                // Write string or json string;
                response.getWriter().write("/Blocked by sentinel");
            } else {
                // Handle in global exception handling
                throw e;
            }
        }
    });
    // Custom configuration if necessary
    config.setHttpMethodSpecify(false);
    config.setWebContextUnify(true);
    config.setOriginParser(new RequestOriginParser() {

        @Override
        public String parseOrigin(HttpServletRequest request) {
            return request.getHeader("S-user");
        }
    });
    // Add sentinel interceptor
    registry.addInterceptor(new SentinelWebInterceptor(config)).addPathPatterns("/**");
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) BlockException(com.alibaba.csp.sentinel.slots.block.BlockException) BlockExceptionHandler(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler) RequestOriginParser(com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser) HttpServletResponse(javax.servlet.http.HttpServletResponse) SentinelWebInterceptor(com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor) BlockException(com.alibaba.csp.sentinel.slots.block.BlockException)

Aggregations

SentinelWebInterceptor (com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor)4 SentinelWebMvcConfig (com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig)3 BlockExceptionHandler (com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler)1 DefaultBlockExceptionHandler (com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.DefaultBlockExceptionHandler)1 RequestOriginParser (com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser)1 BlockException (com.alibaba.csp.sentinel.slots.block.BlockException)1 HttpServletRequest (javax.servlet.http.HttpServletRequest)1 HttpServletResponse (javax.servlet.http.HttpServletResponse)1