首页 > 解决方案 > 有没有办法为kafka生产者发送的消息设置延迟?

问题描述

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

标签: apache-kafkakafka-consumer-apikafka-producer-api

解决方案


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

“[...] 增加了少量的人为延迟——也就是说,生产者不会立即发送一条记录,而是等待给定的延迟,以允许发送其他记录,以便可以将发送的批处理一起发送。 [...]”

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

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

请记住,如果您增加linger.ms,您可能还想增加delivery.timeout.ms. 根据其文档

“这个配置的值应该大于或等于和的 request.timeout.ms 和 linger.ms。”


推荐阅读