Как получить метку, указанную в аннотации с возможностью повторной попытки весной, на уровне класса в MethodInvocateRetrJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как получить метку, указанную в аннотации с возможностью повторной попытки весной, на уровне класса в MethodInvocateRetr

Сообщение Anonymous »

Я указал аннотацию @Retryable в bean-компоненте Spring, как показано ниже.

Код: Выделить всё

@EnableRetry
@Import({GrpcClientRetryConfig.class})
@Retryable(interceptor = "grpcClientRetryInterceptor", label = "ProfileGrpcClient")
public class ProfileGrpcClient {
public RateLimitConfig getRateLimitConfig()

@Component
@AllArgsConstructor
публичный класс RateLimits {
частный конечный клиент ProfileGrpcClient;
// Некоторые вызывает метод client.getRateLimitConfig()

Перехватчик определен в GrpcClientRetryConfig

Код: Выделить всё

@EnableRetry
public class GrpcClientRetryConfig {
@Bean
public RetryOperationsInterceptor grpcClientRetryInterceptor() {
val template = new RetryTemplate();
val backOffPolicy = new ExponentialBackOffPolicy();
// Set the exponential backoff parameter
val interceptor = new RetryOperationsInterceptor();
template.setRetryPolicy(new SimpleRetryPolicy());
template.setBackOffPolicy(backOffPolicy);
template.setListeners(new GrpcClientRetryListener[] {new GrpcClientRetryListener()});
interceptor.setRetryOperations(template);
return interceptor;
}
}
В GrpcClientRetryListener я пытаюсь получить метку, указанную в @Retryable

Код: Выделить всё

@Slf4j
@Component
public class GrpcClientRetryListener extends MethodInvocationRetryListenerSupport {

@Override
public  void onSuccess(
RetryContext context, RetryCallback callback, T result) {
if (callback instanceof MethodInvocationRetryCallback methodInvocationRetryCallback) {
log.info(
"Retry Succeeded: {}, Count: {}",
getMethodName(methodInvocationRetryCallback),
context.getRetryCount());
}
super.onSuccess(context, callback, result);
}

@Override
public  void onError(
RetryContext context, RetryCallback callback, Throwable throwable) {
if (callback instanceof MethodInvocationRetryCallback methodInvocationRetryCallback) {
log.info(
"Retry Failing: {}, Count: {}",
getMethodName(methodInvocationRetryCallback),
context.getRetryCount());
}
super.onError(context, callback, throwable);
}

private  String getMethodName(
MethodInvocationRetryCallback methodInvocationRetryCallback) {
return methodInvocationRetryCallback.getLabel();
}
}
Но во время повторной попытки я вижу метку типа public com.abc.proto.v2.common.ratelimit.RateLimits com.abc.grpcclients.ProfileGrpcClient.getRateLimitConfig(). Полный журнал приведен ниже

Код: Выделить всё

Retry Failing: public com.abc.proto.v2.common.ratelimit.RateLimits com.abc.grpcclients.ProfileGrpcClient.getRateLimitConfig(), Count: 5
Есть ли способ получить метку, указанную в @Retryable, в MethodInvocateRetryListenerSupport?

Подробнее здесь: https://stackoverflow.com/questions/782 ... s-level-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»