Apache kafka 如何在Spring Cloud Stream Kafka Streams应用程序中使用StateStoreBuilder添加StateStore

Apache kafka 如何在Spring Cloud Stream Kafka Streams应用程序中使用StateStoreBuilder添加StateStore,apache-kafka,spring-cloud,apache-kafka-streams,spring-cloud-stream,Apache Kafka,Spring Cloud,Apache Kafka Streams,Spring Cloud Stream,本机Kafka API允许我们: 原因: org.springframework.beans.factory.noSuchBean定义异常:否 名为“流生成器进程”的bean可用 无论如何,我甚至不确定这样做是否正确。那么,我们如何以编程方式创建一个状态存储?由于我的Scs版本(Fishtown SR3),我没有看到有文档记录的过程,但好消息是,有可能以声明方式创建状态存储,因为Germantown: const val DEDUP_STORE = "dedup-store" @EnableB

本机Kafka API允许我们:

原因: org.springframework.beans.factory.noSuchBean定义异常:否 名为“流生成器进程”的bean可用


无论如何,我甚至不确定这样做是否正确。那么,我们如何以编程方式创建一个
状态存储

由于我的Scs版本(Fishtown SR3),我没有看到有文档记录的过程,但好消息是,有可能以声明方式创建状态存储,因为Germantown:

const val DEDUP_STORE = "dedup-store"

@EnableBinding(KafkaStreamsProcessor::class)
class FraudKafkaStreamsConfiguration {

    @KafkaStreamsStateStore(name = DEDUP_STORE, type = KafkaStreamsStateStoreProperties.StoreType.KEYVALUE)
    @StreamListener
    @SendTo("output")
    fun process(@Input("input") input: KStream<String, TransferEmitted>): KStream<String, TransferEmitted> {
        return input.transform(TransformerSupplier { DeduplicationTransformer() }, DEDUP_STORE)

    }

}
const val DEDUP\u STORE=“重复数据消除存储”
@EnableBinding(KafkaStreamsProcessor::类)
类FraudkafKastreamConfiguration{
@KafkaStreamsStateStore(名称=重复数据消除存储,类型=KafkaStreamsStateStoreProperties.StoreType.KEYVALUE)
@StreamListener
@发送到(“输出”)
趣味流程(@Input(“Input”)Input:KStream):KStream{
返回input.transform(TransformerSupplier{DeduplicationTransformer()},重复数据消除存储)
}
}

这也应在Fishtown中提供(活页夹的2.1.3版本)。我的错,你是对的!我检查的是spring cloud stream文档,而不是活页夹:
@EnableBinding(KafkaStreamsProcessor::class)
class FraudKafkaStreamsConfiguration(private val context: ApplicationContext) {

    @StreamListener
    @SendTo("output")
    fun process(@Input("input") input: KStream<String, TransferEmitted>): KStream<String, TransferEmitted> {

        val streamsBuilderFactoryBean = context.getBean("&stream-builder-process", StreamsBuilderFactoryBean::class.java)
        ...
        return xxx

    }

}
const val DEDUP_STORE = "dedup-store"

@EnableBinding(KafkaStreamsProcessor::class)
class FraudKafkaStreamsConfiguration {

    @KafkaStreamsStateStore(name = DEDUP_STORE, type = KafkaStreamsStateStoreProperties.StoreType.KEYVALUE)
    @StreamListener
    @SendTo("output")
    fun process(@Input("input") input: KStream<String, TransferEmitted>): KStream<String, TransferEmitted> {
        return input.transform(TransformerSupplier { DeduplicationTransformer() }, DEDUP_STORE)

    }

}