Настройка скорости вывода spout в apache storm

#apache-storm

#apache-storm

Вопрос:

Как ограничить передачу кортежа spout за секунду без использования команды Sleep в apache storm? например, я не хочу использовать этот код. Спасибо

 puplic Void Next Tuple(){
     utils.sleep(time);
}
  

Комментарии:

1. Если вы включаете отказоустойчивость, вы можете ограничить количество передаваемых сообщений, установив параметр «max.spout.pending». Кроме того, начиная с Storm 1.0, существует механизм обратного давления, который также может дросселировать ваши потоки.

Ответ №1:

Я полагаю, вы хотите, чтобы кортежи выдавались с меньшей скоростью? Как программист, это очень простое решение, которое вы уже должны были понять. Псевдокод будет выглядеть примерно так:

 class MyClass {
private boolean timeUp = false;
public void nextTuple() {
    if (timeUp) {
      EmitMyTuple();
      ResetTimeCounterToZero();
      timeUp = false;
    } else {
      boolean greater = CheckIfTimeIsGreaterThanOneSecond();
      if (greater) {timeUp = true;}
    }
  }
  SleepForFewMilliseconds();
}