Java源码示例:com.netflix.zuul.ZuulFilter

示例1
@Test
public void test() {
  final ZuulFilter preFilter = FilterLoader.getInstance().getFiltersByType("pre").get(0);
  assertTrue(preFilter instanceof TracePreZuulFilter);

  // verify we don't add pre filter continuously
  assertEquals(1, FilterLoader.getInstance().getFiltersByType("pre").size());
  assertEquals(1, FilterLoader.getInstance().getFiltersByType("pre").size());

  final ZuulFilter postFilter = FilterLoader.getInstance().getFiltersByType("post").get(0);
  assertTrue(postFilter instanceof TracePostZuulFilter);

  // verify we don't add post filter continuously
  assertEquals(1, FilterLoader.getInstance().getFiltersByType("post").size());
  assertEquals(1, FilterLoader.getInstance().getFiltersByType("post").size());
}
 
示例2
@Test
public void verifyContextCleared(final MockTracer tracer) {
  final RequestContext context = RequestContext.getCurrentContext();
  final HttpServletRequest httpServletRequest = Mockito.mock(HttpServletRequest.class);
  context.setRequest(httpServletRequest);
  Mockito.when(httpServletRequest.getMethod()).thenReturn("GET");

  final ZuulFilter preFilter = FilterLoader.getInstance().getFiltersByType("pre").get(0);
  preFilter.run();
  assertNotNull(context.get(TracePreZuulFilter.CONTEXT_SPAN_KEY));

  final ZuulFilter postFilter = FilterLoader.getInstance().getFiltersByType("post").get(0);
  postFilter.run();
  assertNull(context.get(TracePreZuulFilter.CONTEXT_SPAN_KEY));

  assertEquals(1, tracer.finishedSpans().size());
}
 
示例3
@Override
public boolean shouldFilter() {
    // 判断:仅处理post过滤器引起的异常
    RequestContext ctx = RequestContext.getCurrentContext();
    ZuulFilter failedFilter = (ZuulFilter) ctx.get(FAILED_FILTER);
    return failedFilter != null && failedFilter.filterType().equals(FilterConstants.POST_TYPE);
}
 
示例4
@Override
public Object processZuulFilter(ZuulFilter filter) throws ZuulException {
    try {
        return super.processZuulFilter(filter);
    } catch (ZuulException e) {
        RequestContext ctx = RequestContext.getCurrentContext();
        ctx.set(FAILED_FILTER, filter);
        throw e;
    }
}
 
示例5
/**
 * 响应过滤器
 *
 * @return
 */
@Bean
public ZuulFilter zuulResponseFilter() {
    ZuulFilter zuulFilter = new ZuulResponseFilter(accessLogService);
    log.info("ZuulErrorFilter [{}]", zuulFilter);
    return zuulFilter;
}
 
示例6
/**
 * 错误过滤器
 *
 * @return
 */
@Bean
public ZuulFilter zuulErrorFilter() {
    ZuulFilter zuulFilter = new ZuulErrorFilter(accessLogService);
    log.info("ZuulErrorFilter [{}]", zuulFilter);
    return zuulFilter;
}
 
示例7
/**
 * 修改请求头
 *
 * @return
 */
@Bean
public ZuulFilter modifyHeaderFilter() {
    ZuulFilter zuulFilter = new ModifyHeaderFilter();
    log.info("ModifyHeaderFilter [{}]", zuulFilter);
    return zuulFilter;
}
 
示例8
@Override
public boolean shouldFilter() {
    // 判断:仅处理来自post过滤器引起的异常
    RequestContext ctx = RequestContext.getCurrentContext();
    ZuulFilter failedFilter = (ZuulFilter) ctx.get("failed.filter");
    if (failedFilter != null && ("post".equals(failedFilter.filterType()) || "get".equals(failedFilter.filterType()))) {
        return true;
    }
    return true;
}
 
示例9
@Bean
public ZuulFilter rateLimiterPreFilter(final RateLimiter rateLimiter, final RateLimitProperties rateLimitProperties,
                                       final RouteLocator routeLocator, final RateLimitKeyGenerator rateLimitKeyGenerator,
                                       final RateLimitUtils rateLimitUtils, final ApplicationEventPublisher eventPublisher) {
    return new RateLimitPreFilter(rateLimitProperties, routeLocator, URL_PATH_HELPER, rateLimiter,
            rateLimitKeyGenerator, rateLimitUtils, eventPublisher);
}
 
示例10
@Bean
public ZuulFilter rateLimiterPostFilter(final RateLimiter rateLimiter, final RateLimitProperties rateLimitProperties,
                                        final RouteLocator routeLocator, final RateLimitKeyGenerator rateLimitKeyGenerator,
                                        final RateLimitUtils rateLimitUtils) {
    return new RateLimitPostFilter(rateLimitProperties, routeLocator, URL_PATH_HELPER, rateLimiter,
            rateLimitKeyGenerator, rateLimitUtils);
}
 
示例11
@Test
public void testZuulFilters() {
    contextRunner.withPropertyValues(PREFIX + ".repository=BUCKET4J_JCACHE")
            .run(context -> {
                assertThat(context).getBeanNames(ZuulFilter.class).hasSize(2);
                assertThat(context).getBeanNames(ZuulFilter.class)
                        .containsExactly("rateLimiterPreFilter", "rateLimiterPostFilter");
            });
}
 
示例12
@Bean
public ZuulFilter sentinelZuulPreFilter() {
    return new SentinelZuulPreFilter(10000);
}
 
示例13
@Bean
public ZuulFilter sentinelZuulPostFilter() {
    return new SentinelZuulPostFilter(1000);
}
 
示例14
@Bean
public ZuulFilter sentinelZuulErrorFilter() {
    return new SentinelZuulErrorFilter(-1);
}
 
示例15
@Bean
public ZuulFilter zuulFilter(){
    return new ORZuulFilter();
}
 
示例16
@Bean
public ZuulFilter zuulFilter(){
    return new AddRequestHeaderFilter();
}
 
示例17
@Bean
public ZuulFilter sentinelZuulPreFilter() {
    return new SentinelZuulPreFilter(10000);
}
 
示例18
@Bean
public ZuulFilter sentinelZuulPostFilter() {
    return new SentinelZuulPostFilter(1000);
}
 
示例19
@Bean
public ZuulFilter sentinelZuulErrorFilter() {
    return new SentinelZuulErrorFilter(-1);
}
 
示例20
@Bean
public ZuulFilter urlRewritingFilter() {
    return new ContentUrlRewritingFilter();
}