apache-kafka - 有没有办法为kafka生产者发送的消息设置延迟?
问题描述
或者甚至可能是一种延迟消费者接收到的消息的方法。我需要在每90s之后在nodejs中进行一次函数调用,所以我想为每条kafka消息添加90s的延迟
解决方案
您可以使用 KafkaProducer 配置linger.ms,它被描述为:
“[...] 增加了少量的人为延迟——也就是说,生产者不会立即发送一条记录,而是等待给定的延迟,以允许发送其他记录,以便可以将发送的批处理一起发送。 [...]”
此配置默认为0
并且可以设置为任何long
值。
根据生产者发送到主题的数据量,您可能还需要增加配置batch.size。否则,如果在延迟结束之前达到这个大小限制linger.ms
,KafkaProducer 将在 90 秒之前发送消息。
请记住,如果您增加linger.ms
,您可能还想增加delivery.timeout.ms
. 根据其文档:
“这个配置的值应该大于或等于和的
request.timeout.ms
和linger.ms
。”
推荐阅读
- java - 使用子字符串和循环的特定格式
- sass - sass:“...:”之后的无效 CSS:预期的“}”,是“url('...”)
- android - Android:CardView 广场向新活动显示
- python - 具有像素加权交叉熵的 U-Net:输入维度错误
- python-2.7 - 如何过滤字典
- javascript - Swagger 错误:ptr 必须是 JSON 指针
- python - 执行 sess.run() 时出现“TypeError:'type' 对象不可下标”
- java - 如何从监听器获取数据?
- c++ - c++程序运行不正确的else语句
- java - 在一个流中收集最小值和最大值