Когда в Apache Storm вызывается метод ack в spout?
У меня топология обработки документов на два болта. Мне нужно иметь возможность вносить изменения в структуру данных, хранящуюся в носике, после того, как документ полностью обработан / прошел через всю топологию. Прежде чем узнать больше об Apache Storm, я считаю, что метод "ack", реализованный в spout, был вызван только в конце топологии. Теперь я вижу, что "ack" нужно вызывать в каждом болте, и меня смущает.
По сути, если я помещу собственный код в метод "ack" в носике: когда он будет выполнен? Каждый раз, когда метод 'ack' вызывается в болте или когда все дерево кортежей было подтверждено / один раз для каждого кортежа, созданного для каждого носика?
0 ответов
Метод подтверждения в носике вызывается только после подтверждения кортежа всеми последующими болтами, а не раньше. Смотрите здесь. Это означает, что ваш код будет выполнен в момент, когда кортеж будет зафиксирован во всем дереве кортежей.