当前位置: 首页 > 知识库问答 >
问题:

Apache Kafka-linger.ms和batch.size设置

韶亮
2023-03-14

kafka生产者设置中,如果您将linger.ms设置为0且非零,预期的行为是什么batch.size?生产者在发送消息之前要等待batch.size多长时间?它会一直等待直到消息的大小小于指定的批处理大小还是因为linger.ms为零,它不会做任何批处理,只是发送每个请求?

共有1个答案

邓俊英
2023-03-14

不,这并不意味着生产商将等待该批产品满。生产商将发送半个完整批次,甚至只包含一条消息的批次。

因此,将批处理大小设置得太大不会导致发送消息的延迟;它只会为批处理使用更多的内存。将批处理大小设置得太小会增加一些开销,因为生产者需要更频繁地发送消息。

默认情况下(linger.ms=0),只要有发送者线程可以发送消息,生产者就会发送消息,即使批处理中只有一条消息。

希望有帮助。

谢谢。

 类似资料:
  • 我试图提高Kafka生产者的吞吐量,我们有CSV报告,正在得到过程和发布到Kafka主题。使用默认的Kafka设置,我们得到的平均Kafka吞吐量。为了提高吞吐量,我尝试测试了一些组合与和,但它没有帮助。 试图与 甚至试过用更少的玲珑。ms和batch。大小 但吞吐量仍在150-200kbps左右 但吞吐量正在下降到100-150kbps。 Kafka主题有12个分区。 欢迎提出任何建议。

  • 我已经在kafka上工作了相当长的六个月,我对用户延迟和存储到主题分区中的数据有一些疑问。 问题1:最初,当我开始阅读Kafka并了解如何使用Kafka的功能时,我被教导说,一个只有一部分和一个复制因子的主题会创造奇迹。经过相当长的六个月的工作,将我的项目迁移到live之后,使用我的主题消息的消费者开始给我一个延迟。我阅读了许多关于消费者延迟的堆栈溢出答案,得出结论,如果我增加某个主题的分区和复制

  • 我们使用的是Kafka0.10.2.1。该文档规定,即使缓冲区未满,也可以发送缓冲区- 默认情况下,即使缓冲区中有额外的未使用空间,也可以立即发送缓冲区。但是,如果要减少请求的数量,可以设置linger。ms设置为大于0的值。 然而,它还表示,即使逗留时间设置为0ms-,生产者也会尝试批量请求。 请注意,及时到达的记录通常会批处理在一起,即使存在延迟。ms=0,因此在重负荷下,无论采用何种玲珑配置

  • 为了实现Kafka消费者对消息的一次处理,我一次提交一条消息,如下所示 上面的代码将消息的处理异步委托给下面的另一个类。 但是,这仍然不能保证只发送一次,因为如果处理失败,它可能仍会提交其他消息,并且以前的消息将永远不会被处理和提交,我在这里的选项是什么?

  • 我想使用Avro来序列化我的Kafka消息的数据,并想将其与Avro模式存储库一起使用,这样我就不必将模式包含在每条消息中。 将Avro与Kafka结合使用似乎是一件很流行的事情,许多博客/堆栈溢出问题/用户组等都提到了将模式Id与消息一起发送,但我找不到一个实际的示例来说明它应该去哪里。 我想它应该放在Kafka消息头的某个地方,但我找不到一个明显的地方。如果它在Avro消息中,则必须根据模式对

  • 我已经创建了要将它们连接在一起的kstream。两个流的输出如下所示: 流1: 流2: 我想创建这两个Stream的连接流(内连接),所以我创建了以下KStream: 在这个KStream中,我只使用了一个连接,我正在更改输出消息的格式,仅此而已。 通过一个例子,我将解释我想做什么: 在窗口内发布以下消息: 流1 流2 加入流 出版的是什么 我想出版什么 总之,我只想在窗口中发布最新消息,而不是所