1. 添加请求开始时间

This commit is contained in:
ant 2024-05-24 14:36:28 +08:00
parent 2a4fa24e45
commit 08f9de153f
3 changed files with 34 additions and 9 deletions

View File

@ -32,12 +32,10 @@ import java.util.List;
@Component
public class ApiLoggingFilter implements GlobalFilter, Ordered {
private static final String START_TIME = "startTime";
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
setTraceId(exchange);
exchange.getAttributes().put(START_TIME, System.currentTimeMillis());
exchange.getAttributes().put(CommonConstants.START_TIME, System.currentTimeMillis());
return chain.filter(exchange.mutate().build()).then(Mono.fromRunnable(() -> {
ServerHttpRequest request = exchange.getRequest();
if (log.isInfoEnabled()) {
@ -45,7 +43,7 @@ public class ApiLoggingFilter implements GlobalFilter, Ordered {
exchange.getRequest().getMethod().name(), exchange.getRequest().getURI().getHost(),
exchange.getRequest().getURI().getPath(), exchange.getRequest().getQueryParams());
String token = request.getHeaders().getFirst(CommonConstants.HEAD_TOKEN_KEY);
Long startTime = exchange.getAttribute(START_TIME);
Long startTime = exchange.getAttribute(CommonConstants.START_TIME);
if (startTime != null) {
Long executeTime = (System.currentTimeMillis() - startTime);
String ip = IPUtils.clientIp(request);
@ -67,7 +65,6 @@ public class ApiLoggingFilter implements GlobalFilter, Ordered {
private void setTraceId(ServerWebExchange exchange){
String traceId = exchange.getAttribute(CommonConstants.TRACE_ID);
if (StringUtils.isEmpty(traceId)){
log.info("traceId : {}", traceId);
traceId = IdUtils.getId(32);
exchange.getAttributes().put(CommonConstants.TRACE_ID, ServletUtils.urlEncode(traceId));
}

View File

@ -52,7 +52,6 @@ public class AuthFilter implements GlobalFilter, Ordered
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
{
log.info("AuthFilter start");
ServerHttpRequest request = exchange.getRequest();
ServerHttpRequest.Builder mutate = request.mutate();
@ -67,7 +66,6 @@ public class AuthFilter implements GlobalFilter, Ordered
{
return chain.filter(exchange);
}
long start = System.currentTimeMillis();
String token = getToken(request, newPath);
if (StringUtils.isEmpty(token))
{
@ -98,8 +96,6 @@ public class AuthFilter implements GlobalFilter, Ordered
// 内部请求来源参数清除
removeHeader(mutate);
long end = System.currentTimeMillis();
log.info("auth time {}", end - start);
return chain.filter(exchange.mutate().request(mutate.build()).build());
}

View File

@ -0,0 +1,32 @@
package com.chushang.gateway.filter;
import com.chushang.common.core.constant.CommonConstants;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
/**
* 计算请求时间
*/
@Component
public class TimestampHeaderFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
// 创建一个新的请求对象并替换原来的头信息
ServerHttpRequest mutatedRequest = request.mutate().headers(headers -> headers.add(CommonConstants.START_TIME, System.currentTimeMillis() + "")).build();
// 继续处理请求
return chain.filter(exchange.mutate().request(mutatedRequest).build());
}
@Override
public int getOrder() {
// 设置过滤器的执行顺序数值越小优先级越高
return -1;
}
}