至少一次语义学:如果生产者收到一个确认(ack)从卡夫卡经纪人和acks=all,这意味着消息已经写了一次准确的卡夫卡主题。然而,如果生产者超时或收到错误,它可能会重试发送消息,假设消息没有写到Kafka主题。如果代理在发送ack之前就失败了,但是在消息成功地写入了Kafka主题之后,这个重试将导致消息被写入两次,从而不止一次地传递给最终的使用者。
我知道时间戳是根据从生产者发送消息的时间来设置的。如果生产者执行重试,这两条消息是否具有相同的时间戳?
发布于 2020-07-18 11:33:44
默认情况下,在创建记录时设置时间戳。因此,是的,如果生产者执行重试,副本具有相同的时间戳。
如果将message.timestamp.type设置为LogAppendTime,则重复项将具有不同的时间戳,每个记录的时间戳将是代理将其附加到日志的有效时间。
https://stackoverflow.com/questions/62966391
复制相似问题