You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Kafka生产者未指定ProducerRecord时间戳时设置时机的技术问询

Kafka生产者自动生成时间戳的时机说明
  • 核心结论:当未指定ProducerRecord的时间戳时,Kafka客户端会在调用send方法后、将消息加入本地发送队列前生成时间戳(也就是sendAsync返回前的本地入队时间),这个时间戳不包含后续的排队等待时间。

具体逻辑

  1. 调用producer.send()后,客户端会先对ProducerRecord做预处理:如果没有自定义时间戳,直接用当前系统时间为记录赋值时间戳。
  2. 完成时间戳赋值后,这条记录才会被加入客户端的本地发送队列,等待后续批量发送、网络传输等操作。
  3. 队列等待、批量攒消息、网络延迟等后续耗时,不会修改已生成的时间戳。

官方文档说明

每条记录都关联有时间戳。若用户未提供时间戳,生产者将用当前时间为记录打标。Kafka最终使用的时间戳取决于主题配置的时间戳类型。

源码佐证

查看Kafka客户端核心代码(如org.apache.kafka.clients.producer.KafkaProducer的doSend方法)可见,时间戳生成逻辑明确位于消息入队操作之前,直接印证了上述时机点。

内容的提问来源于stack exchange,提问作者BeeOnRope

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:05:05