微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Spring Boot 中使用 retryOnResult?

如何解决如何在 Spring Boot 中使用 retryOnResult?

Resilience4j 版本:1.7.0 Java版本:8

如果返回 false,我正在尝试使用 Resilience4j 重试布尔方法代码如下

@Retry(name = "redis")
public boolean publishMessage(RedisMessageWrapper redisMessage) {
    try {
        String response = redisCommands.set(redisMessage.getKey(),redisMessage.getValue());
        logger.info("Response after publishing the message is {}",response);
        return (RedisMessageUtils.SET_ACK_MSG.equalsIgnoreCase(response));
    } catch (Exception e) {
        logger.error("An error occurred while trying to publish the message",e);
        return false;
    }
}

我创建了一个定制器 bean 来重试错误的结果。

@Bean
public RetryConfigCustomizer retryConfigCustomizer() {
    return RetryConfigCustomizer
                .of("redis",builder -> builder.retryOnResult(result -> (boolean) result == false));
}

我的属性文件有以下内容

resilience4j.retry.configs.default.maxAttempts=3
resilience4j.retry.configs.default.retryExceptions[0]=org.springframework.web.client.HttpServerErrorException
resilience4j.retry.configs.default.retryExceptions[1]=java.util.concurrent.TimeoutException
resilience4j.retry.configs.default.retryExceptions[3]=org.springframework.web.client.ResourceAccessException
resilience4j.retry.configs.default.ignoreExceptions[0]=io.github.resilience4j.circuitbreaker.CallNotPermittedException
resilience4j.retry.configs.default.ignoreExceptions[1]=org.springframework.web.client.HttpClientErrorException
resilience4j.retry.instances.redis.baseConfig=default
resilience4j.retry.instances.redis.waitDuration=3500

我在项目中配置了其他重试和断路器,它们可以正常工作,因为它们可以处理异常,但在这种情况下,由于我正在处理一个布尔值,我不知道为什么我的实现不起作用。任何帮助将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。