如何为Quarkus特定资源端点设置自定义请求超时时间
Quarkus单个端点覆盖全局请求超时的实现方式
明确答复:可以针对单个端点覆盖全局的quarkus.http.read-timeout设置,不过Quarkus本身并没有内置你设想的@RequestTimeout注解,但有两种常用方式实现类似需求:
1. 使用@Timeout注解(适用于RESTEasy Reactive/JAX-RS)
如果你的项目基于RESTEasy Reactive或JAX-RS开发,可直接使用io.smallrye.common.annotation.Timeout注解,它支持指定自定义超时时间,示例代码如下:
@Timeout("120s") @GET @Path("/long-running-get") public MyData getMyData() { // 执行耗时业务逻辑 }
该注解会直接覆盖全局读取超时配置,当该端点的处理时间超过120秒时,会自动触发超时异常。
2. 配置文件中针对特定路径设置
除了注解方式,也可以在application.properties或application.yml里针对单个路径单独配置超时,示例:
quarkus.http.read-timeout=30s # 全局默认超时 quarkus.http.paths."/long-running-get".read-timeout=120s # 单个路径覆盖全局设置
这种方式无需修改代码,适合批量调整或不想侵入业务代码的场景。
注意:若同时使用注解和路径配置,注解的优先级会高于配置文件中的路径设置。
内容的提问来源于stack exchange,提问作者nogridbag
相关产品推荐
相关产品推荐

