2016-06-15 4 views

ответ

2

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

Что-то вроде этого:

private int counter = 0; 
private int currentMinute = 0; 
private final int tuplesPerMinute = 5; 

public void nextTuple() { 
    if(counter == tuplesPerMinute) { 
     int newMinute = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis()); 
     if(newMinute <= currentMinute) { 
      return; 
     } 

     counter = 0; 
     currentMinute = newMinute; 
    } 

    ++counter; 
    collector.emit(...); 
} 
Смежные вопросы