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();
}