2

我目前正在使用 akka 流并构建一个反应式应用程序。到目前为止,我的理解async是设定边界时,

每个阶段(流程)都在一个演员中运行。真的吗?

调用mapAsync类似于应用async到流?

理想情况下,我会有一堆图表,并希望每个图表在一个演员中并行运行,这有助于扩展。

附加信息:

我正在用反应式 kafka 实现一些东西,想知道 kafka 主题消耗是如何负载平衡的。即:如果我有 20 个分区,如果我正在使用plainPartitionSource并构建一个图形,它会创建那么多消费者参与者吗?

如果将有 20 个消费者参与者(等于它正在消费的特定主题的 20 个分区),那么理想情况下会有 20 个图。将图表具体化,我希望它在不同的参与者中运行。

简而言之,我想要完全并行,这取决于分区的数量,从消费到处理它。

希望我的问题很清楚。

编辑:

val consumerGroup =
  Consumer.committablePartitionedSource(consumerSettings, Subscriptions.topics("topic1"))
//Process each assigned partition separately
consumerGroup.map {
  case (topicPartition, source) =>
    source
      .via(business)
      .toMat(Sink.ignore)(Keep.both)
      .run()
}

.mapAsyncUnordered(maxPartitions)(_._2) 
//maxPartitions create that 
//many actors here to materialize each of the internal graph in 
//separate actors?

.runWith(Sink.ignore)
4

0 回答 0