Java 将StateRestoreListener与Spring Cloud Kafka Streams绑定器一起使用
我将使用StateRestoreListener和Spring Cloud Kafka Streams活页夹。 我需要监视应用程序的容错状态存储的恢复进度。 汇流中有一个例子 为了观察您提供的所有状态存储的恢复情况 您的应用程序是 org.apache.kafka.streams.processor.StateRestoreListener接口。你 将org.apache.kafka.streams.processor.StateRestoreListener设置为 调用KafkaStreams#setGlobalStateRestoreListener方法 第一个问题是从应用程序中获取卡夫卡流。我通过使用Java 将StateRestoreListener与Spring Cloud Kafka Streams绑定器一起使用,java,spring,apache-kafka,apache-kafka-streams,spring-cloud-stream,Java,Spring,Apache Kafka,Apache Kafka Streams,Spring Cloud Stream,我将使用StateRestoreListener和Spring Cloud Kafka Streams活页夹。 我需要监视应用程序的容错状态存储的恢复进度。 汇流中有一个例子 为了观察您提供的所有状态存储的恢复情况 您的应用程序是 org.apache.kafka.streams.processor.StateRestoreListener接口。你 将org.apache.kafka.streams.processor.StateRestoreListener设置为 调用KafkaStreams
StreamsBuilderFactoryBean streamsBuilderFactoryBean = context.getBean("&stream-builder-process", StreamsBuilderFactoryBean.class);
KafkaStreams kafkaStreams = streamsBuilderFactoryBean.getKafkaStreams();
第二个问题是将StateRestoreListener设置为KafkaStreams,因为我得到了一个错误
java.lang.IllegalStateException:只能设置
处于已创建状态的GlobalStateRestoreListener。当前状态为:正在运行
在Spring Cloud Kafka Streams活页夹中可以使用StateRestoreListener吗?
谢谢您可以通过使用允许您访问底层
KafkaStreams
对象的StreamsBuilderFactoryBeanCustomizer
来实现这一点。如果您使用的是活页夹版本3.0或更高版本,这是推荐的方法。例如,您可以在应用程序中提供以下bean
,并使用GlobalStateRestoreListener
对其进行自定义
@Bean
public StreamsBuilderFactoryBeanCustomizer streamsBuilderFactoryBeanCustomizer() {
return factoryBean -> {
factoryBean.setKafkaStreamsCustomizer(new KafkaStreamsCustomizer() {
@Override
public void customize(KafkaStreams kafkaStreams) {
kafkaStreams.setGlobalStateRestoreListener(...);
}
});
};
}
有更多关于这个策略的细节 您可以通过使用允许访问底层
KafkaStreams
对象的StreamsBuilderFactoryBeanCustomizer
来实现这一点。如果您使用的是活页夹版本3.0或更高版本,这是推荐的方法。例如,您可以在应用程序中提供以下bean
,并使用GlobalStateRestoreListener
对其进行自定义
@Bean
public StreamsBuilderFactoryBeanCustomizer streamsBuilderFactoryBeanCustomizer() {
return factoryBean -> {
factoryBean.setKafkaStreamsCustomizer(new KafkaStreamsCustomizer() {
@Override
public void customize(KafkaStreams kafkaStreams) {
kafkaStreams.setGlobalStateRestoreListener(...);
}
});
};
}
有更多关于这个策略的细节 您必须在将属性加载到流中时注入该属性builder@cricket_007谢谢我考虑过,但我不知道如何在Kafka Streams创建状态时捕获时间。您必须在将属性加载到流中的时间前后注入该属性builder@cricket_007谢谢我想了想,但我不知道如何在卡夫卡溪创造国家的时候抓住时间。你们帮助了我。谢谢)如果成功了,请随意接受这个答案,这样其他有同样问题的人可能会受益。你帮助了我。谢谢)如果有效,请随意接受这个答案,这样其他有相同问题的人可能会受益。