소스 검색

fix bug 增加按testID分组

gufengshou1 1 년 전
부모
커밋
5675036323
1개의 변경된 파일32개의 추가작업 그리고 8개의 파일을 삭제
  1. 32 8
      ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/container/TopOneVideoContainer.java

+ 32 - 8
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/container/TopOneVideoContainer.java

@@ -31,15 +31,12 @@ public class TopOneVideoContainer {
     public String odpsEndpoint;
     public static final String sqlExp="select * from top_return_videolist_hh where dt={dt};";
 
-
+    private Timer timer;
 
     @PostConstruct
     public void init(){
-        refreshTopVideoIdCache();
-        Timer timer = new Timer();
-        // 计算距离下一个小时的第15分钟还有多少毫秒
-        long delay = calculateDelay();
-        // 定时任务在每小时的第15分钟执行
+//        refreshTopVideoIdCache();
+        timer = new Timer();
         timer.schedule(new TimerTask() {
             @Override
             public void run() {
@@ -49,7 +46,8 @@ public class TopOneVideoContainer {
                     log.error("svc=timerTask taskName=refreshTopVideoIdCache e={}",Arrays.toString(e.getStackTrace()));
                 }
             }
-        }, delay, 60 * 60 * 1000);
+        }, 0);
+
     }
     public void refreshTopVideoIdCache(){
         Account account = new AliyunAccount(odpsAccessId, odpsAccessKey);
@@ -74,7 +72,33 @@ public class TopOneVideoContainer {
             idList.add(Long.parseLong(record.get("videoid").toString()));
         }
         videoMap=tempMap;
-        System.out.println("刷新top1视频缓存成功");
+        if(videoMap.size()==0){
+            timer.schedule(new TimerTask() {
+                @Override
+                public void run() {
+                    try {
+                        refreshTopVideoIdCache();
+                    }catch (Exception e){
+                        log.error("svc=timerTask taskName=refreshTopVideoIdCache e={}",Arrays.toString(e.getStackTrace()));
+                    }
+                }
+            }, 30*1000);
+        }else {
+            // 计算距离下一个小时的第15分钟还有多少毫秒
+            long delay = calculateDelay();
+            // 定时任务在每小时的第15分钟执行
+            timer.schedule(new TimerTask() {
+                @Override
+                public void run() {
+                    try {
+                        refreshTopVideoIdCache();
+                    }catch (Exception e){
+                        log.error("svc=timerTask taskName=refreshTopVideoIdCache status=failed e={}",Arrays.toString(e.getStackTrace()));
+                    }
+                }
+            }, delay);
+        }
+        log.info("svc=timerTask taskName=refreshTopVideoIdCache status=success videoMap={}",JSONObject.toJSONString(videoMap));
     }
 
     public boolean inNoAdTopVideo(Long appType,Long videoId){