【发布时间】:2022-01-05 11:48:29
【问题描述】:
我有一个阅读 Message 的 Kafka 消费者。每条消息都有一个 ID 和内容。
case class Message(id: String, content: String)
根据 ID,我想将消息写入单独的接收器。具体到一个 MongoDB 集合中。 Mongo 提供了一个 Sink 将其写入 DB 到指定的集合中。
val sink: Sink[Document, Future[Done]] = MongoSink.insertOne(collection(id))
问题是,我需要在连接 Kafka 消费者源时指定接收器,但每个元素都定义了它应该进入哪个接收器。 有没有办法在元素到达时动态使用特定的接收器。或者这是不可能的,例如,我应该为每个 id 使用不同的 Kafka 主题并将每个源连接到单独的接收器?
【问题讨论】:
-
对于您的用例,我将研究使用能够插入不同集合的接收器(或编写接收器)。除非你绝对需要不同的水槽?
标签: scala apache-kafka akka reactive-streams