【发布时间】:2020-06-03 16:37:42
【问题描述】:
我打算将 StateRestoreListener 与 Spring Cloud Kafka Streams binder 一起使用。 我需要监控我的应用程序的容错状态存储的恢复进度。 confluent https://docs.confluent.io/current/streams/monitoring.html#streams-monitoring-runtime-status 中有示例。
为了观察您提供的所有状态商店的恢复情况 您的应用程序的一个实例 org.apache.kafka.streams.processor.StateRestoreListener 接口。你 通过设置 org.apache.kafka.streams.processor.StateRestoreListener 调用 KafkaStreams#setGlobalStateRestoreListener 方法。
第一个问题是从应用程序获取 Kafka Streams。我使用
解决了这个问题StreamsBuilderFactoryBean streamsBuilderFactoryBean = context.getBean("&stream-builder-process", StreamsBuilderFactoryBean.class);
KafkaStreams kafkaStreams = streamsBuilderFactoryBean.getKafkaStreams();
第二个问题是将StateRestoreListener设置为KafkaStreams,因为我得到错误
java.lang.IllegalStateException: 只能设置 GlobalStateRestoreListener 处于已创建状态。当前状态为:正在运行
是否可以在 Spring Cloud Kafka Streams binder 中使用 StateRestoreListener? 谢谢
【问题讨论】:
-
您必须在属性加载到 Stream builder 时注入该属性
-
@cricket_007 谢谢。想了想,不知道Kafka Streams有CREATED状态怎么抓时间。
标签: java spring apache-kafka apache-kafka-streams spring-cloud-stream