Если к топологии подключен apache Storm Bolt с полным состоянием, скажем, это выглядит следующим образом:
public class WordCountBolt extends BaseStatefulBolt<KeyValueState<String, Long>> {
private KeyValueState<String, Long> wordCounts;
private OutputCollector collector;
...
@Override
public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
this.collector = collector;
}
@Override
public void initState(KeyValueState<String, Long> state) {
wordCounts = state;
}
@Override
public void execute(Tuple tuple) {
String word = tuple.getString(0);
Integer count = wordCounts.get(word, 0);
count++;
wordCounts.put(word, count);
collector.emit(tuple, new Values(word, count));
collector.ack(tuple);
}
...
}
Мне нужно было бы вызвать метод для обновления состояния (wordCounts), скажем, каждые X секунд, независимо от получения события или нет. Возможно ли это в болтах Apache Storm с полным состоянием? Можно ли просто запланировать повторный запуск такого метода через определенный интервал?
public void updateState() {
wordCounts.put("NewKey", 1);
}