将kafka消息保留在缓冲区中

时间:2020-10-22 14:07:45

标签: python apache-kafka

我希望编写一个生产者,该生产者可以每16秒将所有消息刷新到主题后保留在Kafka中。有可能吗?我正在使用Kafka python。

这个想法是: 我有100条消息,按照正常行为,生产者会这样做:

制作人: 讯息1 讯息2 讯息3 ... 讯息100

消费者: 讯息1 讯息2 讯息3 ... 讯息100

我想这样做: 制片人: 讯息1 讯息2 讯息3 ... 讯息100

消费者: 消息1消息2消息3 ...

[16秒后]

...消息N-1条消息N

[16秒后]

消息100

有可能只使用Kafka吗? Tkz

2 个答案:

答案 0 :(得分:1)

一个Kafka主题已经有点缓冲了,生产者也分批发送消息,而不是一个一个地发送消息。

您可以根据所使用的kafka库来增加该批次的大小,并手动刷新它,但是您似乎希望暂停用户一段时间,可以这样做,但这是可行的。还会导致消费群体重新平衡,因为它期望活跃的消费者持续不断地发出心跳(另一个可以更改的超时设置)

其他解决方案是在您的使用者代码中使用出队,并使用计时器,该计时器会不断添加,但只能按计划排空

如果您想要消息N-1和N,然后恢复到某个较早的事件,则需要寻找使用者组(靠近主题结尾)

答案 1 :(得分:0)

您可以在需要的时间暂停使用方(分区),并继续进行轮询(或经纪人按照@OneCricketeer的建议将您的使用方踢出客户),在此期间它不会在暂停的分区上返回任何记录,然后继续使用方时间间隔之后的(分区)。