春季日程表“忙碌”

时间:2018-09-24 19:35:50

标签: java spring spring-boot scheduled-tasks frequency

所以我正在为交通模拟CameraDetector系统。并且传入的图像(称为消息)具有ID,牌照和时间戳(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 :(得分:0)

制作一个名为int的{​​{1}}。高峰时段的频率应较高,非高峰时段的频率应较低。每分钟一次(在系统时钟上),通过代数函数-仅是基本数学函数f(t)来重新校准频率。

使用Spring Scheduling(固定速率= K)每分钟安排一次消息级联事件,该事件发送frequency条消息,然后重新校准frequency重复。

级联功能可能一次拍摄所有freqency = f(now()).条消息都没有意义-可能将它们均匀地或随机地隔开

答案 1 :(得分:-1)

您可以启动一个单独的thread来发送消息,例如让它在消息之间等待n秒; n的范围从您的下限(例如,如果您想每分钟模拟一辆汽车的上限)到上限,例如60。如果您想每分钟模拟20辆车,则可能为3。您还可以通过随机因素调整等待时间。

另一种方法是,以固定的间隔(例如每3秒发射一次),并使用随机因子确定汽车是否展示,从而减少进入的汽车流量一定间隔。