2015-05-14 3 views
2

Am с использованием интеграции Kafka-Storm. Kafka загрузит данные в очередь, а Kafka Spout потянет данные и процессы. У меня ниже дизайна.Storm KafkaSpout не работает, когда болт медленный

Kafka -> Queue -> KafkaSpout -> Process1 Bolt -> Process2 Bolt 

Проблема, если Process2 Болт занимает больше времени, чтобы обработать данные, KafkaSpout становится неудачными и снова пытается прочитать данные из очереди это приводит к дублированию записей.

Если Bolt обрабатывает медленно, почему KafkaSpout обрабатывает его как потерпевший неудачу? Каково решение? есть ли тайм-аут или какие-либо подобные свойства, которые я должен установить в шторме?

ответ

3

Шторм не может получить кортеж, если требуется слишком много времени для обработки, по умолчанию 30 секунд. Так как Storm guarantees processing, когда-то провалился, носик Kafka воспроизведет то же сообщение, пока кортеж не будет успешно обработан.


From doc

Кортеж считается сбой при его дерево сообщений не может быть полностью обработан в течение заданного тайм-аута. Этот тайм-аут можно настроить на основе топологии, используя конфигурацию Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS и по умолчанию до 30 секунд

Смежные вопросы