Async和mapAsync - 在akka流中实现并行性 - 被动kafka

时间:2017-08-14 13:59:24

标签: akka akka-stream reactive-kafka

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

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

调用mapAsync类似于将async应用于流程?

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

其他信息:

我正在用反应性kafka实现一些东西,想知道kafka主题消费是如何负载平衡的。即:如果我有20个分区,如果我使用plainPartitionSource并构建图形,它是否创建了许多消费者角色?

如果要有20个消费者参与者(相当于它正在消耗的特定主题的20个分区),那么理想情况下将有20个图表。实现图形,我希望它在不同的actor中运行。

简而言之,我希望完全并行,具体取决于从消费到处理它的分区数量。

希望我的问题很明确。

编辑:

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)

0 个答案:

没有答案