我有一个Kafka Stream应用程序,它将单个主题读作KTable
,将每个元素转换为0-n
个元素,并将所有元素写入另一个主题。流程看起来像这样(简化了很多):
('a', '123') -> ('a', '1,2,3') -> ('a1', '1'), ('a2', '2'), ('a3', '3')
这是否可以使用Kafka Stream DSL?正在使用的所有主题都是compact
,因此我想模拟一个表,永远不会删除旧值。
tl; dr; 如何将邮件转换为多条邮件?
答案 0 :(得分:2)
不确定您是否可以通过DSL表达这一点。但使用Processor API执行此操作相当简单:
builder.stream("input-topic").transform(...).to("output-topic");
您将键值存储附加到transform()
并为每个输入记录执行以下操作:
store.get()!=null
),则从商店中取出旧值并将其拆分;用null
替换每个“拆分记录”的值并发出所有这些记录value!=null
,则将输入记录按原样放入商店并拆分输入记录并发出单独的输出记录value==null
,请从商店中删除key