#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();
}