Весенний график "Занятость" - PullRequest
0 голосов
/ 24 сентября 2018

, поэтому я программирую симуляцию системы CameraDetector для трафика.и входящие изображения (называемые сообщениями) имеют идентификатор, номерной знак и метку времени (LocalDateTime.Now)

Проблема в том, что мне нужно программировать занятость.Как вы знаете, трафик имеет «занятость» между 5 до 6 вечера и 8-9 утра.Я должен смоделировать эту занятость, генерируя больше сообщений в это время, чем в обычное время.

Как я могу это сделать с помощью Spring?

** Чтобы уточнить, сообщения нужно отправлять чаще в часы работы.временные метки должны быть неизменными в момент их генерации.Это для имитации реальной нагрузки на поток (ы).

Ссылки на документацию и / или код действительно полезны,

MessageGenerateMethod

  @Override
  public CameraMessage generate() {
      randomLicensePlate = String.format("%d-%s%s%s-%d%d%d", r.nextInt(9) + 1, rndChar(), 
                                    rndChar(), rndChar(),
      r.nextInt(9) + 1, r.nextInt(9) + 1, r.nextInt(9) + 1);

      return new CameraMessage(randomIdBound, randomLicensePlate.toString(), 
                                                     LocalDateTime.now());
}

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы можете запустить отдельный поток , который отправляет сообщения, и, например, заставить его ждать n секунд между сообщениями;n будет варьироваться от вашего нижнего предела, например 60, если вы хотите моделировать автомобиль каждую минуту, до вашего верхнего предела;возможно 3, если вы хотите смоделировать 20 машин в минуту.Вы также можете скорректировать время ожидания с помощью случайного коэффициента.

Другим способом может быть запуск генерации с фиксированными интервалами, например каждые 3 секунды, и использование случайного коэффициента для определения того, является ли автомобиль * 1005.* показывает или нет, таким образом уменьшая входящий поток автомобиля на определенные интервалы.

0 голосов
/ 24 сентября 2018

Сделать int под названием frequency.Частота должна быть выше в часы пик и ниже в часы не пик.Раз в минуту (по системным часам) перекалибруйте свою частоту с помощью алгебраической функции - просто элементарной математической функции f (t).

Используйте Spring Scheduling (фиксированная скорость = K), чтобы планировать событие каскада сообщений каждую минуту, которое отправляет frequency сообщений, а затем калибрует freqency = f(now()). Repeat.

Каскадная функция, вероятно, не имеет смысла снимать все n сообщения одновременно - возможно, разнесение их равномерно или случайным образом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...