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

Sam*_*eja 10 apache-kafka kafka-consumer-api kafka-producer-api

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

mik*_*ike 4

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

\n
\n

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

\n
\n

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

\n

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

\n

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

\n
\n

“此配置的值应大于或等于 \xc2\xa0 request.timeout.ms\xc2\xa0 和 \xc2\xa0的总和linger.ms。”

\n
\n