Apache Kafka:重播主题中的消息

Posted

技术标签:

【中文标题】Apache Kafka:重播主题中的消息【英文标题】:Apache Kafka: Replay messages in a topic 【发布时间】:2018-07-07 00:39:09 【问题描述】:

我正在考虑使用 Apache Kafka 作为事件存储,在微服务中存储事件。

我通过各种博客读到的一件事是,Kafka 可以被认为是一个单一的事实来源,Kafka 日志将存储给定主题的所有事件。

我想知道 Kafka 是否有能力从一开始就重播消息(例如,如果发生硬盘驱动器/网络崩溃)?

(请注意,我看到有一些日志存储在主题目录下的 /tmp 文件夹中)。有谁知道可以调用任何命令(如果有)来重播主题中的消息?

【问题讨论】:

【参考方案1】:

是的,您可以寻找特定的偏移量,但是

时间的开始

取决于主题或代理配置。 IIRC,默认保留期为 7 天。

请参阅the Kafka documentation。

【讨论】:

感谢您的有用回答!该链接指向目前的所有文档。如果它指向与您的答案相关的特定部分,它可能会更有帮助(尤其是对于初学者)。再次感谢! 当时,没有特定属性的锚;现在有 - kafka.apache.org/documentation/#log.retention.hours 和 kafka.apache.org/documentation/#retention.ms - 还有 kafka.apache.org/documentation/#log.retention.bytes 和 kafka.apache.org/documentation/#retention.bytes【参考方案2】:

是的,您可以重播消息。由于消费者可以控制重置偏移量。您可以从头开始阅读消息,或者如果您知道任何现有的偏移值,您也可以从那里读取它。 提交消息后,它将在主题中存在,直到其保留期结束。默认保留期为 7 天,但您可以随时更改。

【讨论】:

以上是关于Apache Kafka:重播主题中的消息的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB Sink 连接器:Apache Kafka 中的消息被截断

Apache Kafka 根据消息的值对窗口消息进行排序

Apache Kafka:如何找出主题的消费者组?

每个应用程序的 Apache Kafka 主题

如何检查kafka主题中的消息数量

具有多个分区的 Apache Kafka 消息顺序