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

Quarkus响应式路由:如何让兜底路由不拦截健康检查端点?

解决Quarkus兜底路由优先级低于健康检查端点的问题

方案一:调整兜底路由的order值降低优先级

Quarkus中@Route注解的order值越小,路由匹配优先级越高。SmallRye Health的健康检查端点默认使用的order值小于你设置的2,导致兜底路由先捕获了/q/health/*请求。

只需将兜底路由的order设为更大的数值(比如100),让健康检查的内置路由优先匹配:

@Route(path = "/*", order = 100)
public void other(RoutingContext rc) {
    String path = rc.request().path();
    Log.warnf("Invalid path '%s' ", path);

    rc.response().setStatusCode(200)
        .putHeader(HttpHeaders.CONTENT_TYPE.toString(), "application/json")
        .end("{\"status\": \"error\"}");
}

方案二:在兜底路由中排除/q/前缀的请求

如果不想依赖order数值,可在兜底路由内判断路径,若属于/q/开头的请求,直接跳过当前路由,交给内置处理器处理:

@Route(path = "/*", order = 2)
public void other(RoutingContext rc) {
    String path = rc.request().path();
    // 跳过/q/开头的请求,交给后续路由处理
    if (path.startsWith("/q/")) {
        rc.next();
        return;
    }

    Log.warnf("Invalid path '%s' ", path);

    rc.response().setStatusCode(200)
        .putHeader(HttpHeaders.CONTENT_TYPE.toString(), "application/json")
        .end("{\"status\": \"error\"}");
}

调用rc.next()会让请求继续匹配后续路由,确保健康检查端点能正常响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:12:19