首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用Spring - recover注释。

未调用Spring - recover注释。
EN

Stack Overflow用户
提问于 2022-09-13 08:56:15
回答 1查看 62关注 0票数 1

我在spring中使用Retryable和Recover注释,但是在所有重试尝试之后不会触发恢复方法

我的代码:

在应用程序类中,我添加了- @EnableRetry(proxyTargetClass=true)

代码语言:javascript
复制
@Slf4j
@Component
public class OpenAuditMessageReceiver implements MessageListener {

    @Autowired
    private MessageReceiver messageReceiver;

    @SneakyThrows
    @Override
    @Retryable(value = {SQLException.class} , maxAttempts = 2, backoff = @Backoff(delay = 2000))
    public void onMessage(Message message, byte[] pattern) {
        try {
            log.info("OpenAuditMessageReceiver got {}", new String(message.getBody()));
            OpenAuditDTO openAuditDTO = messageReceiver.getObjectMapper().readValue(message.toString(), OpenAuditDTO.class);
            log.debug("Consumed - {}", openAuditDTO);
            messageReceiver.getAuditEntityRepository().insert(openAuditDTO);
            log.info("Successfully saved Audit Information");
        } catch (Exception e){
            log.error("Error occurred while handling {}", message, e);
            if(e instanceof SQLException){
                throw e;
            }
        }
    }

    @Recover
    public void recover(SQLException e, Message message, byte[] pattern){
        log.info("#####    handle Recovery Mechanism    #####");
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-09-13 13:04:28

@SneakyThrows会导致异常被包装在UndeclaredThrowableException中。所以我们找不到匹配的@Recover方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73700157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档