是否可以使用kafka响应聚合?

时间:2019-05-31 13:36:37

标签: apache-kafka apache-kafka-streams spring-kafka

我在这里关注春季kafka聚合示例:https://github.com/spring-cloud/spring-cloud-stream-samples/tree/master/kafka-streams-samples/kafka-streams-aggregate

我已经为该示例构建了一些变体,以构建更复杂的数据结构,而不仅仅是字符串附加,并且一切正常。

但是,我对使用侦听器(无论是云流,kafa流还是本机Kafka)响应新的聚合值感兴趣。我很难找到任何具体示例,甚至很难找到任何类似的示例,因此我希望能在正确的方向上有所作为。

我总是可以通过聚合方法手动将聚合写入另一个流

kStream.groupBy(...).aggregate(
    ...
    (s, domainEvent, agg) -> {
        ...
        // Update aggregate
        ...
        secondaryStreamChannel().send(MessageBuilder.withPayload(agg).build());
    },
    ...
);

但这似乎并不理想,因为它将使实际的聚合/快照流显得多余。现在,它还打破了聚合方法的隔离,并将其绑定到另一个流中。

我可以通过聚合键来通知其他处理程序,但是在下游处理程序执行和聚合完成之间存在竞争条件。

基本上,我希望有一个事件流,然后将其聚合,然后再调用一种方法,并至少提供并提供聚合键或键/聚合对。理想情况下,直到总更改可用时才调用该方法。是否可以使用现有的cloud-stream,kafka-stream或Kafka API?还有另一种方法(即...我是否试图将此用例与Kafka / streams过于紧密地联系在一起,而在这种情况下可能并不需要)?

0 个答案:

没有答案