我试图阅读Kafka主题,根据它进行一些处理,并将结果存储在另一个主题中。
我的代码如下所示:
builder
.stream(settings.Streams.inputTopic)
.mapValues[Seq[Product]]((e: EventRecord) ⇒ fx(e))
// Something needs to be done here...
.to(settings.Streams.outputTopic)
fx(e)
函数执行一些处理并返回Seq[Product]
。我想将所有产品存储为主题中的单独条目。问题是从主题读取的消息包含多个产品,因此fx(e)
的返回值。
是否可以在流中嵌入此行为?
答案 0 :(得分:3)
使用flatMapValues
代替mapValues
:
import scala.collection.JavaConverters.asJavaIterableConverter
builder
.stream(settings.Streams.inputTopic)
.flatMapValues(e => fx(e).toIterable.asJava)
.to(settings.Streams.outputTopic)