Storm: можно установить topology.message.timeout.secs намного выше для одного болта.

Часть моей топологии зависит от работы со сторонним API, который ограничивает скорость определенных вызовов в 15-минутных окнах. В худшем случае ограничение скорости сработает, и болту нужно будет заснуть на 15 минут. К сожалению, похоже, что я не могу сказать шторму «спать» над задачей в течение 15 минут, но я надеюсь, что ошибаюсь.

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


person David    schedule 30.08.2013    source источник


Ответы (3)


Я не знаю ни одной конфигурации, позволяющей это сделать, и Config не предлагает запись конфигурации для этого.

Обходной путь, как вы предложили. Когда вы получите выходные данные от стороннего API, передайте их в выделенный Spout, который, в свою очередь, передаст их в Bolt «обратного вызова».

person Chiron    schedule 30.08.2013
comment
Поговорил с большинством штормовых гуру в моем штате, и вердикт таков: то, что я хочу сделать, НЕ возможно со штормом из-за периодических 10-16-минутных задержек. - person David; 06.09.2013

Вы можете взглянуть на ticktuple (но это только на 600 секунд)

```
Config conf = new Config();
conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, 1);
```

Взгляните на это

person Vor    schedule 30.08.2013
comment
Возможно, придется объединить первоначальный носик и болт в один супер носик, чтобы обойти это, насколько я знаю, носик может блокироваться на неопределенный срок, поскольку нет такой вещи, как время ожидания носика. - person David; 30.08.2013

Может потребоваться проверить атрибут TOPOLOGY_DISRUPTOR_WAIT_STRATEGY, как указано здесь

person user2720864    schedule 02.09.2013