【发布时间】:2020-08-29 12:41:53
【问题描述】:
恢复期间的全局状态存储将转储来自源主题的数据(这被认为是全局存储的更改日志主题)。
为了删除一条记录,我执行如下操作
kvStore.put("key-1",null)
Kafka 如何知道记录已被删除,并且在恢复过程中它会从源主题转储记录(考虑源主题有一条 key-1 的记录)
在我的拓扑中我有
- 输入主题 -> T1
- 并附加了一个从 T1 读取数据并从记录中构造一个键并向下转发到主题 T2 的进程
- 主题 T2 是全局状态存储的源主题。
例子:
- T1 我得到了数据:
{"id":'123', "name":"Mohit", "type":"insert"} - 构造一个键记录并转发到主题,键和值为T2 -> 键:
123和值:{"id":'123', "name":"Mohit"}
在相同的关键记录之后作为数据类型删除。
T1得到数据:{"id":'123', "name":"Mohit", "type":"insert"}
所以我像这样转发记录
this.context.forward(key, null)
key: 123 value:null
在状态存储中更新相同
我只想知道,在恢复过程中,这条记录将被删除,这意味着如果我使用密钥 123 进入商店,我将获得空值。
【问题讨论】:
-
不是 100% 确定我是否理解这个问题。但是,全局存储是只读的,您不能直接放置/删除数据(全局处理器只能按原样从主题中获取日期来更新存储)。
标签: apache-kafka kafka-consumer-api apache-kafka-streams kafka-producer-api