我正在使用Kafka Streams和Spring Boot。在我的用例中,当我收到客户事件时,我需要将其存储在customer-store
物化视图中,当我收到订单事件时,我需要加入客户并订购,然后将结果存储在customer-order
物化视图中。 / p>
StoreBuilder customerStateStore = Stores.keyValueStoreBuilder(Stores.persistentKeyValueStore("customer-store"),Serdes.String(), customerSerde)
.withLoggingEnabled(new HashMap<>());
streamsBuilder.stream("customer", Consumed.with(Serdes.String(), customerSerde)).to("customer-to-ktable-topic",Produced.with(Serdes.String(), customerSerde));
KTable<String, Customer> customerKTable = streamsBuilder.table("customer-to-ktable-topic", Consumed.with(Serdes.String(), customerSerde),Materialized.as(customerStateStore.name()));
这是问题所在,当我收到Order事件并且我的customerKTable
返回null并且join操作变得无用时。这不是它应该如何工作。我的代码类似于Kafka Music示例,我创建了TestConsumer
类来测试它。代码已上传至Github以供参考。
答案 0 :(得分:1)
此问题由KTable
创建。我使用的KTable语法在语法上是正确的但不起作用。有关详情,请参阅this question
信息。改变KTable语法对我有用。现在,customerKTable
在订单事件到达时从物化视图返回事件或对象。