поэтому у меня есть Saga, и Saga отправляет команду другому микросервису на конкретное событие.Я хотел настроить commandGateway с RetryScheduler, чтобы он попытался отправить команду в случае, если другой микросервис не работает.RetryScheduler будет выполнять повторные попытки только в том случае, если исключение представляет собой RuntimeException, которое NoHandlerForCommandException выдает, когда другая служба, если автономно определенно, является.
Если я не установил maxRetryCount, то сообщение об ошибке будет
oacgateway.IntervalRetryScheduler: Обработка команды [XXXCommand] привела к исключению 1 раз.Отмена навсегда
Если я установлю атрибут, сообщение об ошибке будет
oacgateway.IntervalRetryScheduler: Обработка команды [XXXCommand] привела к исключению и не будет повторена
Если другойМикросервис работает, затем команда обрабатывается правильно, без проблем.
У кого-нибудь есть идеи, в чем может быть проблема?
Это моя конфигурация для команды Gateway с RetryScheduler:
@Bean
public CommandGateway commandGateway(){
Configurer configurer = DefaultConfigurer.defaultConfiguration();
CommandBus commandBus = configurer.buildConfiguration().commandBus();
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
RetryScheduler rs = IntervalRetryScheduler.builder().retryExecutor(scheduledExecutorService).maxRetryCount(100).retryInterval(1000).build();
CommandGateway commandGateway = DefaultCommandGateway.builder().commandBus(commandBus).retryScheduler(rs).build();
return commandGateway;
}