我有一个使用 Kafka 活页夹的 Spring Cloud Stream 项目,我想添加重试功能,我正在尝试使用 RetryTemplate 并指定我想要处理的某些异常,但由于任何异常都被 MessageTransformationException 包装,我无法配置它以我想要的方式。有没有办法处理嵌套异常?
重试模板
@StreamRetryTemplate
public RetryTemplate myRetryTemplate() {
RetryTemplate retryTemplate = new RetryTemplate();
ExceptionClassifierRetryPolicy exceptionClassifierRetryPolicy =
new ExceptionClassifierRetryPolicy();
Map<Class<? extends Throwable>, RetryPolicy> policyMap = new HashMap<>();
policyMap.put(MyException.class, new SimpleRetryPolicy(4));
exceptionClassifierRetryPolicy.setPolicyMap(policyMap);
retryTemplate.setRetryPolicy(exceptionClassifierRetryPolicy);
return retryTemplate;
}
堆栈跟踪
org.springframework.integration.transformer.MessageTransformationException: Failed to transform Message in bean '...' for component ‘...'; nested exception is org.springframework.messaging.MessageHandlingException: error occurred during processing message in 'MethodInvokingMessageProcessor' [org.springframework.integration.handler.MethodInvokingMessageProcessor@4dba2d07]; nested exception is MyException
所以它忽略了我为 MyException 设置的配置