【发布时间】:2021-06-17 12:30:01
【问题描述】:
我是 Apache Kafka 的新手,所以这可能是基础知识。
目前,我试图找出 Kafka 为我提供的一些可能性和功能。所以我想知道是否可以在指定时间段后将消息移动到另一个主题。
场景:
生产者 1 将消息 (M1) 写入主题 1,其中消费者 1 处理消息。
一段时间后,比如 1 小时,M1 移动到消费者 2 订阅的主题 2。
可以用 Kafka 做类似的事情吗?我知道有一种方法可以在一段时间后删除一条消息,但我不知道是否有一种方法可以更改主题或捕获删除操作。
我曾想过在 Producer 中运行一个计时器,但由于数据量巨大,我认为这已经不可能了。
提前致谢
编辑:
感谢@OneCricketeer,我知道,我对几个制作人的第一个假设并没有那么糟糕。
我知道一个 Producer 的吞吐量非常好,而且不会让系统崩溃。
但我仍然担心第二个制片人。
在我的想象中它就像下面的粗略图像
当我每分钟接收 30 条消息时,这意味着我将拥有 31 个生产者实例。 1 个尽快处理消息,另外 30 个等待计时器确定,以便他们可以处理他们的消息。
算上一个小时,大约有 1800 个实例。这就是我关心的地方。或者有没有更好的方法来处理这个?
【问题讨论】:
-
您可以将数据与定时生产者一起排队,是的。你有什么问题?
-
我正在考虑一个系统,它每分钟处理大约 30 条消息或类似的东西。当我为每个运行时间超过一个小时的新对象添加时,我猜这可能会随着时间的推移杀死服务器
-
只有一种方法可以找出答案。如果是这样,增加堆空间
-
所以我假设没有别的办法?
-
我们的 Kafka 生产者每分钟发送超过 30 条消息(甚至可能高于每秒)。生产者已经有一个以字节为单位的内部
batch.size设置,无论如何都限制/批量请求,因此仅凭这一点杀死服务器是不可能的
标签: apache-kafka