2 Commits 075a70401f ... 2d5217d1f7

Auteur SHA1 Message Date
  marxjaw 2d5217d1f7 Merge remote-tracking branch 'origin/master' il y a 2 mois
  marxjaw 2ab9e0a49e 多服务统计容错 il y a 2 mois

+ 0 - 1
yt-middle/middle-platform/src/main/java/com/ytpm/middle/MiddleApplication.java

@@ -5,7 +5,6 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.web.bind.annotation.RestController;
 
 //@EnableScheduling

+ 0 - 70
yt-middle/middle-platform/src/main/java/com/ytpm/middle/monitor/RedisKeyExpirationListener.java

@@ -1,33 +1,12 @@
 package com.ytpm.middle.monitor;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.ytpm.agent.view.AgentAppView;
-import com.ytpm.feign.AppFeign;
-import com.ytpm.middle.dao.ApkMapper;
-import com.ytpm.middle.util.FeignClientInvoker;
-import com.ytpm.middle.util.RedisUtil;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import com.ytpm.middle.view.AppRankingListVO;
-import com.ytpm.middle.view.DashboardRankingListVO;
-import com.ytpm.middle.view.UserRankingListVO;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.data.redis.connection.Message;
 import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
 import org.springframework.data.redis.listener.RedisMessageListenerContainer;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.Resource;
-
 /**
  * redis 监听器
  */
@@ -36,19 +15,6 @@ import javax.annotation.Resource;
 @RefreshScope
 public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
  
-
-    @Resource
-    RedisUtil redisUtil ;
-    @Resource
-    ApkMapper apkMapper;
-    @Autowired
-    private FeignClientInvoker feignInvoker;
-    @Value("${ranking.expire}")
-    private long rankingExpire;
-    @Value("${ranking.limit}")
-    private int rankingLimit;
-    private static final String RANKING_KEY = "yt_ranking";
- 
     /**
      * Creates new {@link } for {@code __keyevent@*__:expired} messages.
      *
@@ -65,41 +31,5 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
     public void onMessage(Message message, byte[] pattern) {
         String key = String.valueOf(message);
         System.err.println("发现过期的key:"+key);
-        if("yt_ranking3".equals(key)){
-             getRankingAnCache(3);
-        }
-        if("yt_ranking2".equals(key)){
-            getRankingAnCache(2);
-        }
-        if("yt_ranking1".equals(key)){
-            getRankingAnCache(1);
-        }
-    }
-
-    /**
-     * 查询排行榜并缓存
-     */
-    private void getRankingAnCache(Integer sortBy) {
-        List<AgentAppView> views = apkMapper.queryAll();
-        List<String> serveList = views.stream().map(AgentAppView::getServiceName).distinct().collect(Collectors.toList());
-        DashboardRankingListVO rankingVO = new DashboardRankingListVO();
-        List<AppRankingListVO> appRankingList = new ArrayList<>();
-        List<UserRankingListVO> userRankingList = new ArrayList<>();
-        for (String serve : serveList) {
-            Object o = feignInvoker.invoke(serve,"queryRankingList",sortBy,rankingLimit);
-            DashboardRankingListVO vo = JSONObject.parseObject(JSON.toJSONString(o), DashboardRankingListVO.class);
-            appRankingList.addAll(vo.getAppRankingList());
-            userRankingList.addAll(vo.getUserRankingList());
-        }
-        //设置应用名称
-        Map<String, String> collect = views.stream().collect(Collectors.toMap(AgentAppView::getAppId, AgentAppView::getAppName));
-        for (AppRankingListVO vo : appRankingList) {
-            vo.setAppName(collect.get(vo.getAppId()));
-        }
-        rankingVO.setUserRankingList(userRankingList.stream().sorted(Comparator.comparing(UserRankingListVO::getTotalIncome)
-                .reversed()).limit(5).collect(Collectors.toList()));
-        rankingVO.setAppRankingList(appRankingList.stream().sorted(Comparator.comparing(AppRankingListVO::getTotalRevenue)
-                .reversed()).limit(5).collect(Collectors.toList()));
-        redisUtil.setTimeOutMinutesStr(RANKING_KEY+sortBy, JSON.toJSONString(rankingVO),rankingExpire);
     }
 }

+ 21 - 3
yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/impl/CountServiceImpl.java

@@ -24,6 +24,7 @@ import com.ytpm.middle.view.DashboardRevenueVO;
 import com.ytpm.middle.view.DashboardRiskVO;
 import com.ytpm.middle.view.DashboardTopCountVo;
 import com.ytpm.middle.view.UserRankingListVO;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
@@ -38,6 +39,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 @RefreshScope
 public class CountServiceImpl implements CountService {
@@ -74,7 +76,13 @@ public class CountServiceImpl implements CountService {
         BigDecimal resultAdCount = new BigDecimal(0);
         BigDecimal resultRevenue = new BigDecimal(0);
         for (Map.Entry<String, String> entry : serveMap.entrySet()) {
-            Object o = feignInvoker.invoke(entry.getKey(), "getAdCount",entry.getValue());
+            Object o;
+            try {
+                o = feignInvoker.invoke(entry.getKey(), "getAdCount",entry.getValue());
+            }catch (Exception e){
+                log.error(e.getMessage(),e);
+                continue;
+            }
             JSONObject object = JSONObject.parseObject(JSON.toJSONString(o));
             resultAdCount = resultAdCount.add(object.getBigDecimal("adCount"));
             resultRevenue = resultRevenue.add(object.getBigDecimal("expectRevenue"));
@@ -111,8 +119,16 @@ public class CountServiceImpl implements CountService {
         DashboardRankingListVO rankingVO = new DashboardRankingListVO();
         List<AppRankingListVO> appRankingList = new ArrayList<>();
         List<UserRankingListVO> userRankingList = new ArrayList<>();
+        boolean hasError = false;
         for (String serve : serveList) {
-            Object o = feignInvoker.invoke(serve,"queryRankingList",sortBy,rankingLimit);
+            Object o;
+            try{
+                o = feignInvoker.invoke(serve,"queryRankingList",sortBy,rankingLimit);
+            }catch (Exception e){
+                log.error(e.getMessage(),e);
+                hasError = true;
+                continue;
+            }
             DashboardRankingListVO vo = JSONObject.parseObject(JSON.toJSONString(o), DashboardRankingListVO.class);
             appRankingList.addAll(vo.getAppRankingList());
             userRankingList.addAll(vo.getUserRankingList());
@@ -126,7 +142,9 @@ public class CountServiceImpl implements CountService {
                 .reversed()).limit(5).collect(Collectors.toList()));
         rankingVO.setAppRankingList(appRankingList.stream().sorted(Comparator.comparing(AppRankingListVO::getTotalRevenue)
                 .reversed()).limit(5).collect(Collectors.toList()));
-        redisUtil.setTimeOutMinutesStr(RANKING_KEY+sortBy, JSON.toJSONString(rankingVO),rankingExpire);
+        if(!hasError){
+            redisUtil.setTimeOutMinutesStr(RANKING_KEY+sortBy, JSON.toJSONString(rankingVO),rankingExpire);
+        }
         return rankingVO;
     }