Apache kafka Akka流内部和显式缓冲区如何与alpakka kafka中的底层kafka客户端设置交互?

Apache kafka Akka流内部和显式缓冲区如何与alpakka kafka中的底层kafka客户端设置交互?,apache-kafka,akka-stream,alpakka,akka-kafka,Apache Kafka,Akka Stream,Alpakka,Akka Kafka,我试图使用akka流缓冲区来提高流的吞吐量,我想知道它是如何应用于Kafka的 Consumer.committableSource(consumerSettings, Subscriptions.topics(topic)) 特别是, val kafkaSource = Consumer.committableSource(consumerSettings, Subscriptions.topics(topic)) .buffer(10000, OverflowStrate

我试图使用akka流缓冲区来提高流的吞吐量,我想知道它是如何应用于Kafka的

Consumer.committableSource(consumerSettings, Subscriptions.topics(topic))
特别是,

 val kafkaSource =
   Consumer.committableSource(consumerSettings, Subscriptions.topics(topic))
     .buffer(10000, OverflowStrategy.backpressure)
关于底层的卡夫卡API,这里到底发生了什么

我在基础Kafka客户端上具有以下配置:

.withProperty(AUTO_OFFSET_RESET_CONFIG, offsetReset)
      .withProperty(MAX_POLL_INTERVAL_MS_CONFIG, maxPollIntervalMs.toString)
      .withProperty(SESSION_TIMEOUT_MS_CONFIG, sessionTimeoutMs.toString)
      .withProperty(HEARTBEAT_INTERVAL_MS_CONFIG, heartbeatIntervalMs.toString)
      .withProperty(FETCH_MAX_WAIT_MS_CONFIG, fetchMaxWaitMs.toString)
      .withProperty(MAX_POLL_RECORDS_CONFIG, maxPollRecords.toString)
      .withProperty(FETCH_MAX_BYTES_CONFIG, maxPollRecords.toString)
      .withProperty(MAX_PARTITION_FETCH_BYTES_CONFIG, maxPollRecords.toString)
因此我有一个
MAX\u POLL\u RECORDS\u CONFIG
FETCH\u MAX\u BYTES\u CONFIG
MAX\u PARTITION\u FETCH\u BYTES\u CONFIG

我想知道的是,对于底层客户机上配置的抓取,缓冲区将如何发挥作用

  • Consumer.committeablesource
    是否在其自己的Actor中具体化,并通过其缓冲区从底层Kafka客户端接收消息?假设底层客户机配置为获取多达一百万条消息,而参与者作为
    1000
    的缓冲区?这意味着什么?会发生什么?Actor缓冲区是否覆盖Kafka客户端的轮询请求,或者是否在其邮箱中获取Kafka客户端推送到的数据,直到其轮询结果(在基础客户端中配置的最大值)通过

  • 我想我最需要知道Kafka流的内部和/或显式缓冲区如何与轮询请求的设置交互。

    就我而言,Alpakka Kafka的实现只为那些有下游需求的源获取数据。这意味着在每次轮询期间,对新消息没有需求的分区都将暂停。就我而言,Alpakka-Kafka的实现只为那些从下游有需求的源获取数据。这意味着在每次轮询期间,不需要新消息的分区将暂停。