我有一个用两个螺栓处理文档的拓扑结构。我需要能够在一个文档被完全处理/通过整个拓扑之后修改存储在喷口中的数据结构。在进一步了解apachestorm之前,我认为在spout中实现的'ack'方法只在拓扑的末尾被调用。我现在明白了,在每一个螺栓中都需要调用“ack”,我很困惑。
本质上,如果我把自定义代码放在喷口的“ack”方法中:它什么时候执行?每次在一个bolt中调用'ack'方法时,或者当一个元组树的整个元组都被ack/每次输出一个元组一次?
我有一个用两个螺栓处理文档的拓扑结构。我需要能够在一个文档被完全处理/通过整个拓扑之后修改存储在喷口中的数据结构。在进一步了解apachestorm之前,我认为在spout中实现的'ack'方法只在拓扑的末尾被调用。我现在明白了,在每一个螺栓中都需要调用“ack”,我很困惑。
本质上,如果我把自定义代码放在喷口的“ack”方法中:它什么时候执行?每次在一个bolt中调用'ack'方法时,或者当一个元组树的整个元组都被ack/每次输出一个元组一次?
1条答案
按热度按时间vltsax251#
只有在元组被下游的所有螺栓确认之后,才调用spout中的ack方法,而不是之前。看这里。这意味着您的代码将在整个元组树中的元组被确认时执行。