feat: 1.4.0
1. 优化RetryAspect不开启重试时日志模糊问题
This commit is contained in:
parent
ad5ed2b582
commit
9333288e7e
@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.aizuda.easy.retry.client.core.cache.GroupVersionCache;
|
import com.aizuda.easy.retry.client.core.cache.GroupVersionCache;
|
||||||
import com.aizuda.easy.retry.client.core.config.EasyRetryProperties;
|
import com.aizuda.easy.retry.client.core.config.EasyRetryProperties;
|
||||||
import com.aizuda.easy.retry.client.core.exception.EasyRetryClientException;
|
import com.aizuda.easy.retry.client.core.exception.EasyRetryClientException;
|
||||||
|
import com.aizuda.easy.retry.client.core.intercepter.RetrySiteSnapshot.EnumStage;
|
||||||
import com.aizuda.easy.retry.client.core.strategy.RetryStrategy;
|
import com.aizuda.easy.retry.client.core.strategy.RetryStrategy;
|
||||||
import com.aizuda.easy.retry.client.core.annotation.Retryable;
|
import com.aizuda.easy.retry.client.core.annotation.Retryable;
|
||||||
import com.aizuda.easy.retry.client.core.retryer.RetryerResultContext;
|
import com.aizuda.easy.retry.client.core.retryer.RetryerResultContext;
|
||||||
@ -61,7 +62,7 @@ public class RetryAspect implements Ordered {
|
|||||||
public Object around(ProceedingJoinPoint point) throws Throwable {
|
public Object around(ProceedingJoinPoint point) throws Throwable {
|
||||||
String traceId = UUID.randomUUID().toString();
|
String traceId = UUID.randomUUID().toString();
|
||||||
|
|
||||||
LogUtils.debug(log,"进入 aop [{}]", traceId);
|
LogUtils.debug(log,"Start entering the around method traceId:[{}]", traceId);
|
||||||
Retryable retryable = getAnnotationParameter(point);
|
Retryable retryable = getAnnotationParameter(point);
|
||||||
String executorClassName = point.getTarget().getClass().getName();
|
String executorClassName = point.getTarget().getClass().getName();
|
||||||
String methodEntrance = getMethodEntrance(retryable, executorClassName);
|
String methodEntrance = getMethodEntrance(retryable, executorClassName);
|
||||||
@ -78,12 +79,12 @@ public class RetryAspect implements Ordered {
|
|||||||
throwable = t;
|
throwable = t;
|
||||||
} finally {
|
} finally {
|
||||||
|
|
||||||
LogUtils.debug(log,"开始进行重试 aop [{}]", traceId);
|
LogUtils.debug(log,"Start retrying. traceId:[{}] scene:[{}] executorClassName:[{}]", traceId, retryable.scene(), executorClassName);
|
||||||
// 入口则开始处理重试
|
// 入口则开始处理重试
|
||||||
retryerResultContext = doHandlerRetry(point, traceId, retryable, executorClassName, methodEntrance, throwable);
|
retryerResultContext = doHandlerRetry(point, traceId, retryable, executorClassName, methodEntrance, throwable);
|
||||||
}
|
}
|
||||||
|
|
||||||
LogUtils.debug(log,"aop 结果处理 traceId:[{}] result:[{}] ", traceId, result, throwable);
|
LogUtils.debug(log,"Method return value is [{}]. traceId:[{}]", result, traceId, throwable);
|
||||||
|
|
||||||
// 若是重试完成了, 则判断是否返回重试完成后的数据
|
// 若是重试完成了, 则判断是否返回重试完成后的数据
|
||||||
if (Objects.nonNull(retryerResultContext)) {
|
if (Objects.nonNull(retryerResultContext)) {
|
||||||
@ -112,13 +113,19 @@ public class RetryAspect implements Ordered {
|
|||||||
// 下游响应不重试码,不开启重试
|
// 下游响应不重试码,不开启重试
|
||||||
|| RetrySiteSnapshot.isRetryForStatusCode()
|
|| RetrySiteSnapshot.isRetryForStatusCode()
|
||||||
) {
|
) {
|
||||||
LogUtils.info(log, "校验不通过不开启重试 methodEntrance:[{}] isRunning:[{}] throwable:[{}] isRetryFlow:[{}] isRetryForStatusCode:[{}]" ,
|
if (!RetrySiteSnapshot.isMethodEntrance(methodEntrance)) {
|
||||||
!RetrySiteSnapshot.isMethodEntrance(methodEntrance),
|
LogUtils.debug(log, "Non-method entry does not enable local retries. traceId:[{}] [{}]", traceId, RetrySiteSnapshot.getMethodEntrance());
|
||||||
RetrySiteSnapshot.isRunning(),
|
} else if (RetrySiteSnapshot.isRunning()) {
|
||||||
Objects.isNull(throwable),
|
LogUtils.debug(log, "Existing running retry tasks do not enable local retries. traceId:[{}] [{}]", traceId, EnumStage.valueOfStage(RetrySiteSnapshot.getStage()));
|
||||||
RetrySiteSnapshot.isRetryFlow(),
|
} else if (Objects.isNull(throwable)) {
|
||||||
RetrySiteSnapshot.isRetryForStatusCode()
|
LogUtils.debug(log, "No exception, no local retries. traceId:[{}]", traceId);
|
||||||
);
|
} else if (RetrySiteSnapshot.isRetryFlow()) {
|
||||||
|
LogUtils.debug(log, "Retry traffic does not enable local retries. traceId:[{}] [{}]", traceId, RetrySiteSnapshot.getRetryHeader());
|
||||||
|
} else if (RetrySiteSnapshot.isRetryForStatusCode()) {
|
||||||
|
LogUtils.debug(log, "Existing exception retry codes do not enable local retries. traceId:[{}]", traceId);
|
||||||
|
} else {
|
||||||
|
LogUtils.debug(log, "Unknown situations do not enable local retry scenarios. traceId:[{}]", traceId);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,14 +137,14 @@ public class RetryAspect implements Ordered {
|
|||||||
try {
|
try {
|
||||||
|
|
||||||
RetryerResultContext context = retryStrategy.openRetry(retryable.scene(), executorClassName, point.getArgs());
|
RetryerResultContext context = retryStrategy.openRetry(retryable.scene(), executorClassName, point.getArgs());
|
||||||
LogUtils.info(log,"本地重试结果 message:[{}]", context);
|
LogUtils.info(log,"local retry result. traceId:[{}] message:[{}]", traceId, context);
|
||||||
if (RetryResultStatusEnum.SUCCESS.getStatus().equals(context.getRetryResultStatusEnum().getStatus())) {
|
if (RetryResultStatusEnum.SUCCESS.getStatus().equals(context.getRetryResultStatusEnum().getStatus())) {
|
||||||
LogUtils.debug(log, "aop 结果成功 traceId:[{}] result:[{}]", traceId, context.getResult());
|
LogUtils.debug(log, "local retry successful. traceId:[{}] result:[{}]", traceId, context.getResult());
|
||||||
}
|
}
|
||||||
|
|
||||||
return context;
|
return context;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtils.error(log,"重试组件处理异常,{}", e);
|
LogUtils.error(log,"retry component handling exception,traceId:[{}]", traceId, e);
|
||||||
|
|
||||||
// 预警
|
// 预警
|
||||||
sendMessage(e);
|
sendMessage(e);
|
||||||
@ -160,14 +167,14 @@ public class RetryAspect implements Ordered {
|
|||||||
EasyRetryProperties.getGroup(),
|
EasyRetryProperties.getGroup(),
|
||||||
LocalDateTime.now().format(formatter),
|
LocalDateTime.now().format(formatter),
|
||||||
e.getMessage())
|
e.getMessage())
|
||||||
.title("重试组件异常:[{}]", EasyRetryProperties.getGroup())
|
.title("retry component handling exception:[{}]", EasyRetryProperties.getGroup())
|
||||||
.notifyAttribute(notifyAttribute.getNotifyAttribute());
|
.notifyAttribute(notifyAttribute.getNotifyAttribute());
|
||||||
|
|
||||||
Alarm<AlarmContext> alarmType = altinAlarmFactory.getAlarmType(notifyAttribute.getNotifyType());
|
Alarm<AlarmContext> alarmType = altinAlarmFactory.getAlarmType(notifyAttribute.getNotifyType());
|
||||||
alarmType.asyncSendMessage(context);
|
alarmType.asyncSendMessage(context);
|
||||||
}
|
}
|
||||||
} catch (Exception e1) {
|
} catch (Exception e1) {
|
||||||
LogUtils.error(log, "客户端发送组件异常告警失败", e1);
|
LogUtils.error(log, "Client failed to send component exception alert.", e1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.aizuda.easy.retry.client.core.intercepter;
|
package com.aizuda.easy.retry.client.core.intercepter;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.aizuda.easy.retry.client.core.exception.EasyRetryClientException;
|
||||||
import com.aizuda.easy.retry.common.core.constant.SystemConstants;
|
import com.aizuda.easy.retry.common.core.constant.SystemConstants;
|
||||||
import com.aizuda.easy.retry.common.core.model.EasyRetryHeaders;
|
import com.aizuda.easy.retry.common.core.model.EasyRetryHeaders;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -185,6 +186,16 @@ public class RetrySiteSnapshot {
|
|||||||
this.stage = stage;
|
this.stage = stage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static EnumStage valueOfStage(int stage) {
|
||||||
|
for (final EnumStage value : EnumStage.values()) {
|
||||||
|
if (value.getStage() == stage) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new EasyRetryClientException("unsupported stage");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user