Воспроизводит ли storm кортеж, время обработки которого истекло?

В документации Storm упоминается, что Storm воспроизводит кортеж, время обработки которого истекло. Мой вопрос заключается в том, делает ли шторм это автоматически (без вызова fail() в исходном потоке) или это скорее ответственность исходного потока за воспроизведение кортежа (вызывается fail(), и воспроизведение должно быть реализовано внутри или даже где-то снаружи) )?


person oo_olo_oo    schedule 09.05.2013    source источник


Ответы (2)


Чтобы правильно воспроизвести тайм-аут, вы должны привязать кортеж к идентификатору, когда вы выпускаете его из носика. По истечении времени ожидания все, что вы использовали в качестве привязки, возвращается методу отказа (fail(object anchorId)). Теперь вы можете использовать anchorId кортежа с ошибкой/тайм-аутом для повторного воспроизведения или чего-либо еще, что вы хотите сделать с кортежем тайм-аута. Каждый идентификатор привязки должен быть уникальным. Примером идентификатора привязки является идентификатор базы данных. В случае сбоя кортежа вы можете использовать идентификатор базы данных для воссоздания кортежа и его повторной отправки. Итак, чтобы ответить на ваш вопрос, у вас должна быть логика воспроизведения внутри сбоя, и вы можете использовать anchorId для воссоздания своего кортежа. Надеюсь, эта информация поможет

person Naresh    schedule 13.05.2013
comment
Есть ли способ узнать, какой болт вышел из строя в методе fail() Spout? По сути, я хочу отправить информацию о болте в кортеже, пока ack() или fail(). Как это можно сделать? - person Kavitha Madhavaraj; 15.09.2016