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

Quarkus测试Amazon Lambda时报No virtual channel available错误如何解决

问题根因

你使用了错误的测试依赖,quarkus-test-amazon-lambda是面向普通事件型Lambda的测试组件,不适用于quarkus-amazon-lambda-rest这类REST API Gateway代理的Lambda场景,同时额外添加的轮询配置干扰了Netty虚拟通道的自动初始化流程。

解决方案

步骤1:替换测试依赖

删除原有的quarkus-test-amazon-lambda依赖,替换为REST类型Lambda对应的测试依赖:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-test-amazon-lambda-rest</artifactId>
    <scope>test</scope>
</dependency>

步骤2:移除无效配置

删除application.properties中的quarkus.lambda.enable-polling-jvm-mode=true配置项,该配置仅用于JVM模式部署到AWS Lambda环境时的轮询场景,本地@QuarkusTest测试无需添加,反而会阻断虚拟通道注册。

步骤3:调整测试用例(可选)

如果只需要验证REST接口逻辑,直接使用RestAssured编写常规JAX-RS测试即可:

@QuarkusTest
public class GreetingTest {
    @Test
    public void testHelloEndpoint() {
        given()
          .when().get("/hello")
          .then()
             .statusCode(200)
             .body(is("hello jaxrs"));
    }
}

如果需要模拟API Gateway事件触发场景,使用LambdaRestClient替代原有的LambdaClient调用即可。

可选优化(MacOS DNS警告消除)

如果是MacOS环境,想要消除开头的DNS警告,添加如下依赖即可:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-resolver-dns-native-macos</artifactId>
    <classifier>osx-aarch_64</classifier> <!-- 英特尔芯片换为osx-x86_64 -->
    <scope>test</scope>
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:30:05