如何让我的拓扑循环 运行 在重新开始之前完成?

How to make my topology cycle run completely before starting it again?

我有一个 spout,它在 nextTuple() 中进行一些处理并向 Kafka bolt 发送值。一旦 Kafka bolt 确认,spouts ack() 方法就会被调用。

在我的例子中,在 ack() 方法完成之前,拓扑调用喷口的 nextTuple() 方法。

有没有办法控制拓扑只有在上一个拓扑完全完成后才能重新开始?

您可以将配置参数 "topology.max.spout.pending" 设置为 1。对于这种情况,在先前发出的元组被确认之前,不会调用 nextTuple()。