有没有办法为kafka生产者发送的消息设置延迟?

时间:2018-05-07 11:52:33

标签: apache-kafka kafka-consumer-api kafka-producer-api

或者甚至可能是延迟消费者收到的消息的方法。我需要在每隔90s后在nodejs中进行函数调用,所以我想为每个kafka消息添加90s的延迟

1 个答案:

答案 0 :(得分:0)

您可以使用KafkaProducer配置linger.ms,其描述为:

“ [...]添加了少量的人为延迟-即,生产者将立即等待直到给定的延迟以允许发送其他记录,以便可以发送,而不是立即发送记录。 [...]“

此配置默认为0,并且可以设置为任何long值。

根据生产者发送给主题的数据量,您可能还希望增加配置batch.size。否则,如果在linger.ms的延迟结束之前达到此大小限制,则KafkaProducer将在90秒之前发送消息。

请记住,如果您增加linger.ms,则可能还希望增加delivery.timeout.ms。根据其documentation

“此配置的值应大于或等于request.timeout.mslinger.ms的总和。”