Вы можете зафиксировать время ответа всех обращений API к весеннему облачному шлюзу, написав настраиваемую фабрику фильтров, как показано ниже:
ResponseFilterFactory extends AbstractGatewayFilterFactory<ResponseFilterFactory.Config> {
public ResponseFilterFactory() {
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
return new OrderedGatewayFilter((exchange, chain) -> {
// Pre-processing
startTime = System.currentTimeMillis();
return chain.filter(exchange)
.then(Mono.fromRunnable(() -> {
// Post-processing
String serviceResponseStatus= exchange.getResponse().getStatusCode().toString();
if(serviceResponseStatus.startsWith("2")){
serviceResponseStatus="Success";
}
else{
serviceResponseStatus="Failure";
}
long execTime = System.currentTimeMillis() - startTime;
LOGGER.info("caller={}, serviceName={}, serviceResponseStatus={}, serviceResponseTime(ms)={}", Objects.isNull(caller) ? "default" : caller,
serviceName, serviceResponseStatus, execTime);
}));
},1);
}
public static class Config {
private String headerName;
public String getHeaderName() {
// add some thing to config if you want to log along with resp time, ex. headers etc
return null;
}
}
После этого вы можете добавить ее в свой файл конфигурации маршрутизации по умолчанию фильтр:
cloud:
gateway:
default-filters:
- name: ResponseFilterFactory