|
@@ -3,12 +3,15 @@ package com.jjt.task;
|
|
|
import com.jjt.biz.domain.BizObj;
|
|
|
import com.jjt.biz.service.IBizObjMetricsService;
|
|
|
import com.jjt.biz.service.IBizObjService;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.concurrent.*;
|
|
|
|
|
|
/**
|
|
|
* 定时任务调度测试
|
|
@@ -21,23 +24,50 @@ public class DataTask {
|
|
|
private IBizObjMetricsService metricsService;
|
|
|
@Resource
|
|
|
private IBizObjService objService;
|
|
|
+ @Resource
|
|
|
+ private JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
public void imitate() {
|
|
|
- Date s = new Date();
|
|
|
- objService.selectBizObjList(new BizObj()).forEach(obj -> {
|
|
|
- metricsService.imitate(obj.getObjId(),new Date());
|
|
|
- });
|
|
|
- Date e = new Date();
|
|
|
- System.err.println(e.getTime()-s.getTime());
|
|
|
+ String sql = "SELECT MAX(create_time) from biz_obj_metrics_data";
|
|
|
+ LocalDateTime localDateTime = jdbcTemplate.queryForObject(sql, LocalDateTime.class);
|
|
|
+ //如果之前没数据,补一个月,如果有,则补至当前
|
|
|
LocalDateTime ed = LocalDateTime.now();
|
|
|
- LocalDateTime st = ed.minusDays(1);
|
|
|
+ LocalDateTime st = ed.minusDays(30);
|
|
|
+ if (localDateTime != null) {
|
|
|
+ st = localDateTime;
|
|
|
+ }
|
|
|
do {
|
|
|
Date date = Date.from(st.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
- objService.selectBizObjList(new BizObj()).forEach(obj -> {
|
|
|
- metricsService.imitate(obj.getObjId(), date);
|
|
|
- });
|
|
|
- st = st.plusMinutes(15);
|
|
|
+ List<BizObj> list = objService.selectBizObjList(new BizObj());
|
|
|
+ list.forEach(obj -> metricsService.imitate(obj.getObjId(), date));
|
|
|
+ st = st.plusMinutes(5);
|
|
|
} while (!st.isAfter(ed));
|
|
|
}
|
|
|
|
|
|
+ public void imitateOne() {
|
|
|
+ try {
|
|
|
+ ExecutorService threadPool = new ThreadPoolExecutor(
|
|
|
+ 10,
|
|
|
+ 20,
|
|
|
+ 3,
|
|
|
+ TimeUnit.SECONDS,
|
|
|
+ new LinkedBlockingDeque<>(3),
|
|
|
+ Executors.defaultThreadFactory(),
|
|
|
+ new ThreadPoolExecutor.DiscardOldestPolicy());
|
|
|
+ LocalDateTime ed = LocalDateTime.now();
|
|
|
+ Date date = Date.from(ed.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ List<BizObj> list = objService.selectBizObjList(new BizObj());
|
|
|
+ CountDownLatch latch = new CountDownLatch(list.size());
|
|
|
+ list.forEach(obj -> threadPool.submit(() -> {
|
|
|
+ metricsService.imitate(obj.getObjId(), date);
|
|
|
+ latch.countDown();
|
|
|
+ }));
|
|
|
+ // Wait for all threads to finish
|
|
|
+ latch.await();
|
|
|
+ threadPool.shutdown();
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|