使用Kafka Streams提取Seq

时间:2017-11-15 13:51:12

标签: scala apache-kafka-streams

我试图阅读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)的返回值。

是否可以在流中嵌入此行为?

1 个答案:

答案 0 :(得分:3)

使用flatMapValues代替mapValues

import scala.collection.JavaConverters.asJavaIterableConverter

builder
  .stream(settings.Streams.inputTopic)
  .flatMapValues(e => fx(e).toIterable.asJava)
  .to(settings.Streams.outputTopic)