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

Quarkus集成Apache Camel AWS Lambda时CDI注入ProducerTemplate空指针问题

空指针异常原因

AWS Lambda运行时默认会自行实例化你指定的RequestHandler实现类,该实例化过程不经过Quarkus的CDI托管上下文,因此类内标记的@Inject注解不会被CDI容器识别处理,ProducerTemplate自然不会被注入,最终得到null值。

解决方案
  • 优先使用Quarkus官方Lambda集成方案
    1. 确保项目引入io.quarkus:quarkus-amazon-lambda依赖
    2. 在application.properties中配置quarkus.lambda.handler=languageScoreLambda,指定你定义的Bean名称
    3. 给LanguageScoreLambda类添加@ApplicationScoped注解,明确声明为CDI托管Bean
    4. Lambda控制台配置的Handler入口改为Quarkus提供的统一入口io.quarkus.amazon.lambda.runtime.QuarkusStreamHandler,不要直接指向你自己写的LanguageScoreLambda类。Quarkus的统一入口会从CDI容器中获取你定义的Handler实例,此时@Inject的ProducerTemplate会被正确注入。
  • 临时兼容方案
    如果不想修改现有Handler入口配置,可以去掉@Inject注解,在需要使用ProducerTemplate的位置手动从CDI容器获取实例,代码示例:
    ProducerTemplate template = CDI.current().select(ProducerTemplate.class).get();
    
  • 依赖校验
    确认项目已经引入org.apache.camel.quarkus:camel-quarkus-core依赖,该扩展会自动向CDI容器注册ProducerTemplate的生产逻辑,否则即使CDI上下文正常也无法注入ProducerTemplate实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:00