KTable无法从物化视图中获取数据

时间:2018-04-26 04:30:14

标签: apache-kafka apache-kafka-streams

我正在使用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以供参考。

1 个答案:

答案 0 :(得分:1)

此问题由KTable创建。我使用的KTable语法在语法上是正确的但不起作用。有关详情,请参阅this question 信息。改变KTable语法对我有用。现在,customerKTable在订单事件到达时从物化视图返回事件或对象。