【发布时间】:2019-01-02 10:34:27
【问题描述】:
在 kafka 生产者设置中,如果您将 linger.ms 设置为 0 且 batch.size 非零,预期的行为是什么?生产者在发送消息之前要等待达到 batch.size 多长时间? 它会一直等到消息的大小小于指定的批量大小或 由于 linger.ms 为零,它不会进行任何批处理,只发送每个请求?
【问题讨论】:
标签: apache-kafka kafka-producer-api
在 kafka 生产者设置中,如果您将 linger.ms 设置为 0 且 batch.size 非零,预期的行为是什么?生产者在发送消息之前要等待达到 batch.size 多长时间? 它会一直等到消息的大小小于指定的批量大小或 由于 linger.ms 为零,它不会进行任何批处理,只发送每个请求?
【问题讨论】:
标签: apache-kafka kafka-producer-api
不,这并不意味着生产者将等待批次 变得饱满。 生产者将发送半满批次,甚至只发送一个批次 在他们的消息。
因此,将batch size设置过大不会造成延迟 在发送消息时;它只会为批次使用更多内存。设置批次 尺寸太小会增加一些开销,因为生产者需要发送消息 更频繁。
默认情况下(linger.ms=0),生产者将 只要有可用的发送者线程发送消息就发送消息,即使 批处理中只有一条消息。
希望对你有帮助。
谢谢。
【讨论】: