Quarkus升级至3.6.3后出现UnsatisfiedResolutionException问题求助
解决Quarkus 3.6.3中kafka-streams的Topology依赖无法解析问题
这个问题源于Quarkus 3.x版本对kafka-streams扩展的行为变更:Quarkus 3.x不再自动提供默认的org.apache.kafka.streams.Topology Bean,而2.x版本中会自动生成空的Topology实例,升级后CDI容器找不到对应依赖,因此抛出jakarta.enterprise.inject.UnsatisfiedResolutionException。
解决方法
方法1:用@Produces显式提供Topology Bean
创建CDI Bean类,通过@Produces方法生成Topology实例:
import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.inject.Produces; import org.apache.kafka.streams.Topology; @ApplicationScoped public class KafkaTopologyProvider { @Produces public Topology createDefaultTopology() { // 返回空Topology,后续可根据业务需求添加流处理逻辑 return new Topology(); } }
方法2:使用Quarkus Kafka Streams专属注解@KafkaStreamsTopology
用该注解标注构建Topology的方法,Quarkus会自动将其注册为CDI Bean:
import io.quarkus.kafka.streams.KafkaStreamsTopology; import org.apache.kafka.streams.Topology; public class AppKafkaTopology { @KafkaStreamsTopology public Topology buildTopology() { Topology topology = new Topology(); // 按需添加流处理逻辑,无需求则返回空实例即可 return topology; } }
额外检查项
- 确保所有Quarkus依赖版本统一为3.6.3,避免混合版本引发兼容性问题
- 确认项目使用的JDK版本符合Quarkus 3.x要求(最低JDK 11)
- 验证
quarkus-kafka-streams依赖已正确引入(pom.xml/Gradle配置无拼写错误)
内容的提问来源于stack exchange,提问作者bullcheck
相关产品推荐
相关产品推荐

