You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在application.yml中配置Quarkus SmallRye Fault Tolerance运行时参数

Quarkus SmallRye Fault Tolerance YAML全局配置不生效问题

我在Quarkus应用中使用SmallRye Fault Tolerance的@Retry等注解替换了原有链式调用代码(方法为public,所在类标注@ApplicationScoped),注解本身可正常工作。但由于应用内方法和类数量较多,希望在application.yml中统一配置maxRetries、delay、jitter等参数,而非在每个注解上单独定义。

测试发现使用application.properties时配置可正常生效,但改用application.yml(已添加quarkus-config-yaml依赖)后,@Retry的配置被忽略,仍使用默认值,其他配置(如端口)可正常生效。尝试多种yml配置结构均无效,请求确认如何通过application.yml正确配置SmallRye Fault Tolerance的运行时参数。


原有链式调用代码

.onFailure()
.retry()
.withBackOff(200)
.withJitter(200)
.atMost(5)
.onFailure()
.recoverWithUni(throwable -> Uni.createFrom().item("failed"));

注解形式代码

@Retry(maxRetries = 5, delay = 200, jitter = 200)
@Fallback(fallbackMethod = "handleFailure")

测试用CakeResource.java代码

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import org.eclipse.microprofile.faulttolerance.Fallback;
import org.eclipse.microprofile.faulttolerance.Retry;
import org.jboss.logging.Logger;

import java.util.Random;


@Path("/api/bake")
@ApplicationScoped
public class CakeResource {
    private static final Logger logger = Logger.getLogger(CakeResource.class);
    private final Random r = new Random();

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Retry()
    @Fallback(fallbackMethod = "defaultFallback")
    public String bakeCake() throws Exception {
        logger.info("****** Newly Backing Cake ********");
        final Double randDouble = r.nextDouble();
        logger.info(randDouble);

        if (randDouble < 0.5) {
            logger.info(" No items left sorry .... ");
            throw new Exception();
        }

        if (randDouble < 0.999) {
            logger.info(" oops Cake burned... ");
            throw new Exception();
        }

        logger.info(" Cake prepared ");

        return "Here is your take, Guten Appetit\n";
    }

    public String defaultFallback() {
        return "Sorry unable prepare the cake today \n";
    }
}

尝试过的YAML配置方式

Approach-1

quarkus:
  http:
    port: 8082

smallrye-fault-tolerance:
  retry:
    max-retries: 5
    delay: PT2S

Approach-2

quarkus:
  http:
    port: 8083

mp:
  fault-tolerance:
    retry:
      max-retries: 3 
      delay: 500     
      jitter: 100    

Approach-3

quarkus:
  http:
    port: 8081

  smallrye-fault-tolerance:
    retry:
      max-retries: 5
      delay: PT2S
      jitter: PT0.2S

Approach-4

quarkus:
  http:
    port: 8081

mp:
  fault-tolerance:
    retry:
      max-retries: 5
      delay: PT2S
      jitter: PT0.2S

smallrye-fault-tolerance:
  retry:
    max-retries: 5
    delay: PT2S
    jitter: PT0.2S

内容的提问来源于stack exchange,提问作者BATMAN_2008

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:02:14