首页 > 解决方案 > Apache Kafka:一段时间后将消息发送到另一个主题

问题描述

我是 Apache Kafka 的新手,所以这可能是基础知识。
目前,我试图找出 Kafka 为我提供的一些可能性和功能。所以我想知道是否可以在指定时间段后将消息移动到另一个主题。

场景:
生产者 1 将消息 (M1) 写入主题 1,消费者 1 处理消息。
一段时间后,比方说 1 小时,M1 移动到消费者 2 订阅的主题 2。

可以用 Kafka 做类似的事情吗?我知道有一种方法可以在一段时间后删除一条消息,但我不知道是否有一种方法可以更改主题或捕获删除操作。

我曾想过在 Producer 中运行一个计时器,但由于数据量巨大,我认为这已经不可能了。

提前致谢

编辑:
感谢@OneCricketeer,我知道,我对几个制作人的第一个假设并没有那么糟糕。我知道一个 Producer 的吞吐量非常好,而且不会让系统崩溃。但我仍然对第二个制片人感到担忧。
在我的想象中,它就像下面的粗略图像
该过程的粗略示例

当我每分钟接收 30 条消息时,这意味着我将拥有 31 个生产者实例。1 人尽快处理消息,其他 30 人等待计时器确定,以便他们可以处理他们的消息。
算上一个小时,大约有 1800 个实例。这就是我关心的地方。还是有更好的方法来处理这个?

标签: apache-kafka

解决方案


我找到了可能适用于我的情况的解决方案。我不小心偶然发现了一个 Consumer-Methode,它允许您根据时间戳读取消息。该方法称为 offsetsForTimes,从 0.10 版开始可用。

请参阅Kafka API或 我发现研究该方法的以下 帖子。

也许这对其他人有用,所以我决定发布这个。


推荐阅读