【发布时间】:2020-07-08 13:10:17
【问题描述】:
所以我的问题是我的属性文件中定义了一些 Kafka 主题,我可以从该主题中读取 KafkaStream<String, String> 在我的 SpringBoot 应用程序中没有问题。但我想访问KafkaStreams 对象,以便我可以打印我的KafkaStreams 拓扑,这对开发很有用。
在我的@StreamListener 之一中,我尝试检索stream-builder-process bean,以便我可以通过这种方式获取底层KafkaStreams 对象(如此处所述:https://cloud.spring.io/spring-cloud-stream-binder-kafka/spring-cloud-stream-binder-kafka.html#_accessing_the_underlying_kafkastreams_object)但不幸的是它不起作用。
代码如下:
@StreamListener
public void processEvent(@Input("order-paid-stream") KStream<String, String> inputStream) {
StreamsBuilderFactoryBean streamsBuilderFactoryBean = applicationContext.getBean("&stream-builder-process", StreamsBuilderFactoryBean.class);
KafkaStreams kafkaStreams = streamsBuilderFactoryBean.getKafkaStreams();
System.out.println(kafkaStreams.toString());
inputStream.foreach(this::handleMessage);
}
应用程序启动时,我收到以下消息:
在应用程序启动后出现类似错误(未找到该名称的 bean)后,我还尝试在我的一个 REST 控制器方法上以相同的方式检索 KafkaStreams 对象。
有什么帮助吗?
【问题讨论】:
-
以前没有人遇到过这个问题吗?
标签: java spring-boot apache-kafka