gpt4 book ai didi

com.netflix.zuul.filters.ZuulFilter.filterType()方法的使用及代码示例

转载 作者:知者 更新时间:2024-03-18 19:29:31 32 4
gpt4 key购买 nike

本文整理了Java中com.netflix.zuul.filters.ZuulFilter.filterType()方法的一些代码示例,展示了ZuulFilter.filterType()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZuulFilter.filterType()方法的具体详情如下:
包路径:com.netflix.zuul.filters.ZuulFilter
类名称:ZuulFilter
方法名:filterType

ZuulFilter.filterType介绍

[英]to classify a filter by type. Standard types in Zuul are "in" for pre-routing filtering, "end" for routing to an origin, "out" for post-routing filters.
[中]按类型对过滤器进行分类。Zuul中的标准类型是“in”用于路由前筛选,“end”用于路由到原点,“out”用于路由后筛选。

代码示例

代码示例来源:origin: Netflix/zuul

public ZuulFilterChainRunner(ZuulFilter<T, T>[] zuulFilters, FilterUsageNotifier usageNotifier, FilterRunner<T, ?> nextStage) {
  super(zuulFilters[0].filterType(), usageNotifier, nextStage);
  this.filters = zuulFilters;
}

代码示例来源:origin: Netflix/zuul

void putFilter(String sName, ZuulFilter filter, long lastModified)
{
  List<ZuulFilter> list = hashFiltersByType.get(filter.filterType());
  if (list != null) {
    hashFiltersByType.remove(filter.filterType()); //rebuild this list
  }
  String nameAndType = filter.filterType() + ":" + filter.filterName();
  filtersByNameAndType.put(nameAndType, filter);
  filterRegistry.put(sName, filter);
  filterClassLastModified.put(sName, lastModified);
}

代码示例来源:origin: Netflix/zuul

public <T extends ZuulMessage> ZuulFilter<T, T> [] getFilters(final ZuulFilter start, final ZuulFilter stop) {
  final List<ZuulFilter> zuulFilters = filterLoader.getFiltersByType(start.filterType());
  final ZuulFilter[] filters = new ZuulFilter[zuulFilters.size() + 2];
  filters[0] = start;
  for (int i=1, j=0; i < filters.length && j < zuulFilters.size(); i++,j++) {
    filters[i] = zuulFilters.get(j);
  }
  filters[filters.length -1] = stop;
  return filters;
}

代码示例来源:origin: Netflix/zuul

public ZuulFilterChainRunner(ZuulFilter<T, T>[] zuulFilters, FilterUsageNotifier usageNotifier, FilterRunner<T, ?> nextStage) {
  super(zuulFilters[0].filterType(), usageNotifier, nextStage);
  this.filters = zuulFilters;
}

代码示例来源:origin: Netflix/zuul

@Override
  public void notify(ZuulFilter filter, ExecutionStatus status) {
    DynamicCounter.increment(METRIC_PREFIX + filter.getClass().getSimpleName(), "status", status.name(), "filtertype", filter.filterType().toString());
  }
}

代码示例来源:origin: Netflix/zuul

/**
 * Returns a list of filters by the filterType specified
 *
 * @param filterType
 * @return a List<ZuulFilter>
 */
public List<ZuulFilter> getFiltersByType(FilterType filterType) {
  List<ZuulFilter> list = hashFiltersByType.get(filterType);
  if (list != null) return list;
  list = new ArrayList<ZuulFilter>();
  Collection<ZuulFilter> filters = filterRegistry.getAllFilters();
  for (Iterator<ZuulFilter> iterator = filters.iterator(); iterator.hasNext(); ) {
    ZuulFilter filter = iterator.next();
    if (filter.filterType().equals(filterType)) {
      list.add(filter);
    }
  }
  // Sort by filterOrder.
  Collections.sort(list, new Comparator<ZuulFilter>() {
    @Override
    public int compare(ZuulFilter o1, ZuulFilter o2) {
      return o1.filterOrder() - o2.filterOrder();
    }
  });
  hashFiltersByType.putIfAbsent(filterType, list);
  return list;
}

代码示例来源:origin: Netflix/zuul

void putFilter(String sName, ZuulFilter filter, long lastModified)
{
  List<ZuulFilter> list = hashFiltersByType.get(filter.filterType());
  if (list != null) {
    hashFiltersByType.remove(filter.filterType()); //rebuild this list
  }
  String nameAndType = filter.filterType() + ":" + filter.filterName();
  filtersByNameAndType.put(nameAndType, filter);
  filterRegistry.put(sName, filter);
  filterClassLastModified.put(sName, lastModified);
}

代码示例来源:origin: Netflix/zuul

public <T extends ZuulMessage> ZuulFilter<T, T> [] getFilters(final ZuulFilter start, final ZuulFilter stop) {
  final List<ZuulFilter> zuulFilters = filterLoader.getFiltersByType(start.filterType());
  final ZuulFilter[] filters = new ZuulFilter[zuulFilters.size() + 2];
  filters[0] = start;
  for (int i=1, j=0; i < filters.length && j < zuulFilters.size(); i++,j++) {
    filters[i] = zuulFilters.get(j);
  }
  filters[filters.length -1] = stop;
  return filters;
}

代码示例来源:origin: Netflix/zuul

@Test
public void testGetFiltersByType() throws Exception {
  assertTrue(loader.putFilter(file));
  verify(registry).put(any(String.class), any(ZuulFilter.class));
  final List<ZuulFilter> filters = new ArrayList<ZuulFilter>();
  filters.add(filter);
  when(registry.getAllFilters()).thenReturn(filters);
  List<ZuulFilter> list = loader.getFiltersByType(FilterType.INBOUND);
  assertTrue(list != null);
  assertTrue(list.size() == 1);
  ZuulFilter filter = list.get(0);
  assertTrue(filter != null);
  assertTrue(filter.filterType().equals(FilterType.INBOUND));
}

代码示例来源:origin: Netflix/zuul

@Override
  public void notify(ZuulFilter filter, ExecutionStatus status) {
    DynamicCounter.increment(METRIC_PREFIX + filter.getClass().getSimpleName(), "status", status.name(), "filtertype", filter.filterType().toString());
  }
}

代码示例来源:origin: Netflix/zuul

protected void recordFilterError(final I inMesg, final ZuulFilter<I, O> filter, final Throwable t) {
  // Add a log statement for this exception.
  final String errorMsg = "Filter Exception: filter=" + filter.filterName() +
      ", request-info=" + inMesg.getInfoForLogging() + ", msg=" + String.valueOf(t.getMessage());
  if (t instanceof ZuulException && !((ZuulException) t).shouldLogAsError()) {
    LOG.warn(errorMsg);
  }
  else {
    LOG.error(errorMsg, t);
  }
  // Store this filter error for possible future use. But we still continue with next filter in the chain.
  final SessionContext zuulCtx = inMesg.getContext();
  zuulCtx.getFilterErrors().add(new FilterError(filter.filterName(), filter.filterType().toString(), t));
  if (zuulCtx.debugRouting()) {
    Debug.addRoutingDebug(zuulCtx, "Running Filter failed " + filter.filterName() + " type:" +
        filter.filterType() + " order:" + filter.filterOrder() + " " + t.getMessage());
  }
}

代码示例来源:origin: Netflix/zuul

/**
 * Returns a list of filters by the filterType specified
 *
 * @param filterType
 * @return a List<ZuulFilter>
 */
public List<ZuulFilter> getFiltersByType(FilterType filterType) {
  List<ZuulFilter> list = hashFiltersByType.get(filterType);
  if (list != null) return list;
  list = new ArrayList<ZuulFilter>();
  Collection<ZuulFilter> filters = filterRegistry.getAllFilters();
  for (Iterator<ZuulFilter> iterator = filters.iterator(); iterator.hasNext(); ) {
    ZuulFilter filter = iterator.next();
    if (filter.filterType().equals(filterType)) {
      list.add(filter);
    }
  }
  // Sort by filterOrder.
  Collections.sort(list, new Comparator<ZuulFilter>() {
    @Override
    public int compare(ZuulFilter o1, ZuulFilter o2) {
      return o1.filterOrder() - o2.filterOrder();
    }
  });
  hashFiltersByType.putIfAbsent(filterType, list);
  return list;
}

代码示例来源:origin: Netflix/zuul

protected O handleFilterException(final I inMesg, final ZuulFilter<I, O> filter, final Throwable ex) {
  inMesg.getContext().setError(ex);
  if (filter.filterType() == ENDPOINT) {
    inMesg.getContext().setShouldSendErrorResponse(true);
  }
  recordFilterError(inMesg, filter, ex);
  return filter.getDefaultOutput(inMesg);
}

代码示例来源:origin: Netflix/zuul

protected final boolean shouldSkipFilter(final I inMesg, final ZuulFilter<I, O> filter) {
  if (filter.filterType() == ENDPOINT) {
    //Endpoints may not be skipped
    return false;
  }
  final SessionContext zuulCtx = inMesg.getContext();
  if (!filter.shouldFilter(inMesg)) {
    return true;
  }
  if ((zuulCtx.shouldStopFilterProcessing()) && (!filter.overrideStopFilterProcessing())) {
    return true;
  }
  if (zuulCtx.isCancelled()) {
    return true;
  }
  return false;
}

代码示例来源:origin: Netflix/zuul

@Test
public void testGetFiltersByType() throws Exception {
  assertTrue(loader.putFilter(file));
  verify(registry).put(any(String.class), any(ZuulFilter.class));
  final List<ZuulFilter> filters = new ArrayList<ZuulFilter>();
  filters.add(filter);
  when(registry.getAllFilters()).thenReturn(filters);
  List<ZuulFilter> list = loader.getFiltersByType(FilterType.INBOUND);
  assertTrue(list != null);
  assertTrue(list.size() == 1);
  ZuulFilter filter = list.get(0);
  assertTrue(filter != null);
  assertTrue(filter.filterType().equals(FilterType.INBOUND));
}

代码示例来源:origin: Netflix/zuul

protected void recordFilterError(final I inMesg, final ZuulFilter<I, O> filter, final Throwable t) {
  // Add a log statement for this exception.
  final String errorMsg = "Filter Exception: filter=" + filter.filterName() +
      ", request-info=" + inMesg.getInfoForLogging() + ", msg=" + String.valueOf(t.getMessage());
  if (t instanceof ZuulException && !((ZuulException) t).shouldLogAsError()) {
    LOG.warn(errorMsg);
  }
  else {
    LOG.error(errorMsg, t);
  }
  // Store this filter error for possible future use. But we still continue with next filter in the chain.
  final SessionContext zuulCtx = inMesg.getContext();
  zuulCtx.getFilterErrors().add(new FilterError(filter.filterName(), filter.filterType().toString(), t));
  if (zuulCtx.debugRouting()) {
    Debug.addRoutingDebug(zuulCtx, "Running Filter failed " + filter.filterName() + " type:" +
        filter.filterType() + " order:" + filter.filterOrder() + " " + t.getMessage());
  }
}

代码示例来源:origin: Netflix/zuul

protected O handleFilterException(final I inMesg, final ZuulFilter<I, O> filter, final Throwable ex) {
  inMesg.getContext().setError(ex);
  if (filter.filterType() == ENDPOINT) {
    inMesg.getContext().setShouldSendErrorResponse(true);
  }
  recordFilterError(inMesg, filter, ex);
  return filter.getDefaultOutput(inMesg);
}

代码示例来源:origin: Netflix/zuul

protected final boolean shouldSkipFilter(final I inMesg, final ZuulFilter<I, O> filter) {
  if (filter.filterType() == ENDPOINT) {
    //Endpoints may not be skipped
    return false;
  }
  final SessionContext zuulCtx = inMesg.getContext();
  if (!filter.shouldFilter(inMesg)) {
    return true;
  }
  if ((zuulCtx.shouldStopFilterProcessing()) && (!filter.overrideStopFilterProcessing())) {
    return true;
  }
  if (zuulCtx.isCancelled()) {
    return true;
  }
  return false;
}

代码示例来源:origin: Netflix/zuul

protected void recordFilterCompletion(final ExecutionStatus status, final ZuulFilter<I, O> filter, long startTime,
                   final ZuulMessage zuulMesg, final ZuulMessage startSnapshot) {
  final SessionContext zuulCtx = zuulMesg.getContext();
  final long execTime = System.currentTimeMillis() - startTime;
  if (execTime >= FILTER_EXCESSIVE_EXEC_TIME.get()) {
    LOG.warn("Filter {} took {} ms to complete! status = {}", filter.filterName(), execTime, status.name());
  }
  // Record the execution summary in context.
  switch (status) {
    case FAILED:
      zuulCtx.addFilterExecutionSummary(filter.filterName(), FAILED.name(), execTime);
      break;
    case SUCCESS:
      zuulCtx.addFilterExecutionSummary(filter.filterName(), SUCCESS.name(), execTime);
      if (startSnapshot != null) {
        //debugRouting == true
        Debug.addRoutingDebug(zuulCtx, "Filter {" + filter.filterName() + " TYPE:" + filter.filterType().toString()
            + " ORDER:" + filter.filterOrder() + "} Execution time = " + execTime + "ms");
        Debug.compareContextState(filter.filterName(), zuulCtx, startSnapshot.getContext());
      }
      break;
    default:
      break;
  }
  LOG.debug("Filter {} completed with status {}, UUID {}", filter.filterName(), status.name(),
      zuulMesg.getContext().getUUID());
  // Notify configured listener.
  usageNotifier.notify(filter, status);
}

代码示例来源:origin: Netflix/zuul

protected void recordFilterCompletion(final ExecutionStatus status, final ZuulFilter<I, O> filter, long startTime,
                   final ZuulMessage zuulMesg, final ZuulMessage startSnapshot) {
  final SessionContext zuulCtx = zuulMesg.getContext();
  final long execTime = System.currentTimeMillis() - startTime;
  if (execTime >= FILTER_EXCESSIVE_EXEC_TIME.get()) {
    LOG.warn("Filter {} took {} ms to complete! status = {}", filter.filterName(), execTime, status.name());
  }
  // Record the execution summary in context.
  switch (status) {
    case FAILED:
      zuulCtx.addFilterExecutionSummary(filter.filterName(), FAILED.name(), execTime);
      break;
    case SUCCESS:
      zuulCtx.addFilterExecutionSummary(filter.filterName(), SUCCESS.name(), execTime);
      if (startSnapshot != null) {
        //debugRouting == true
        Debug.addRoutingDebug(zuulCtx, "Filter {" + filter.filterName() + " TYPE:" + filter.filterType().toString()
            + " ORDER:" + filter.filterOrder() + "} Execution time = " + execTime + "ms");
        Debug.compareContextState(filter.filterName(), zuulCtx, startSnapshot.getContext());
      }
      break;
    default:
      break;
  }
  LOG.debug("Filter {} completed with status {}, UUID {}", filter.filterName(), status.name(),
      zuulMesg.getContext().getUUID());
  // Notify configured listener.
  usageNotifier.notify(filter, status);
}

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com