首页 > 解决方案 > 如何跟踪主题中两个事件之间的变化?

问题描述

MySTORE_TOPIC是一个压缩主题,包含我的实体的当前状态,基于从EVENTS_TOPIC(由 Kafka Streams 应用程序)消耗的事件。这样做的主要目的STORE_TOPIC是作为(全局)KTable 加载。

EVENTS_TOPIC                    |    STORE_TOPIC
                                |    
VALUE                           |     KEY      VALUE
{"entity":"A", "a":1, "b":2}    |     A        {"a":1, "b":2}
{"entity":"B", "c":3}           |     B        {"c":3}
{"entity":"A", "d":4}           |     A        {"a":1, "b":2, "d":4}
{"entity":"A", "a":0, "e":5}    |     A        {"a":0, "b":2, "d":4, "e":5}

当定义的属性子集发生更改时,新的消费者需要得到通知。

例如,如果我们决定跟踪属性“a”、“b”和“c”的变化,预期的输出将是:

A        {"a":1, "b":2}
B        {"c":3}
(Nothing)
A        {"a":0, "b":2}

为此,我编写了一个新的 Kafka Streams 应用程序:

有没有更简单、更优雅的方式来实现这一目标?

您能否确认,如果我STORE_TOPIC直接将其加载为 KTable : .table(STORE_TOPIC),我只能访问实体的当前状态,而无法访问实体的先前版本并对其进行比较?

标签: apache-kafkaapache-kafka-streams

解决方案


推荐阅读