如果在创建ProducerRecord
时没有提供时间戳,Kafka客户端库将为您提供一个时间戳:
记录也有一个相关的时间戳。如果用户没有提供时间戳,生产者将用它的当前时间标记记录。Kafka最终使用的时间戳取决于为主题配置的时间戳类型。
但是,该时间戳是设置为 * 早 *(即,在sendAsync
返回之前),反映消息的本地入队时间,还是设置为晚(即,大约在消息到达队列头并即将发送时)?
也就是说,时间戳是否包括(先于)排队时间?
如果在创建ProducerRecord
时没有提供时间戳,Kafka客户端库将为您提供一个时间戳:
记录也有一个相关的时间戳。如果用户没有提供时间戳,生产者将用它的当前时间标记记录。Kafka最终使用的时间戳取决于为主题配置的时间戳类型。
但是,该时间戳是设置为 * 早 *(即,在sendAsync
返回之前),反映消息的本地入队时间,还是设置为晚(即,大约在消息到达队列头并即将发送时)?
也就是说,时间戳是否包括(先于)排队时间?
1条答案
按热度按时间wydwbb8l1#
它应该在构造
new ProducerRecord
时设置,而不是通过send
/sendAsync
,但它也取决于代理/主题配置。对于经纪人-
log.message.timestamp.type
定义消息中的时间戳是消息创建时间还是日志附加时间。值应为CreateTime
或LogAppendTime
默认值-
CreateTime
这意味着如果没有提供,它将由生产者设置。
但如果这是LogAppendTime,则在生产者发送记录之后,该时间戳将在服务器端被覆盖。