Authored by hugufei

fix bug

@@ -29,11 +29,11 @@ public abstract class AbstractCacheRequestResponseComponent<K extends ICacheRequ @@ -29,11 +29,11 @@ public abstract class AbstractCacheRequestResponseComponent<K extends ICacheRequ
29 * @param useEhCache 29 * @param useEhCache
30 * @return 30 * @return
31 */ 31 */
32 - public void bacthFillResponseWithCache(final List<T> requests, boolean useEhCache) { 32 + public void bacthFillResponseWithCache(final List<T> requests, boolean useEhCache,int maxMissRequestCount){
33 //1、批量从缓存中获取 33 //1、批量从缓存中获取
34 this.batchFillResponseFromCache(requests, useEhCache); 34 this.batchFillResponseFromCache(requests, useEhCache);
35 //2、获取未命中缓存的请求 35 //2、获取未命中缓存的请求
36 - List<T> missCacheRequests = this.filterMissCacheRequests(requests); 36 + List<T> missCacheRequests = this.filterMissCacheRequests(requests,maxMissRequestCount);
37 //3、如果remainRequests为空,则说明全部命中了缓存,直接返回即可 37 //3、如果remainRequests为空,则说明全部命中了缓存,直接返回即可
38 if (missCacheRequests.isEmpty()) { 38 if (missCacheRequests.isEmpty()) {
39 return ; 39 return ;
@@ -77,12 +77,15 @@ public abstract class AbstractCacheRequestResponseComponent<K extends ICacheRequ @@ -77,12 +77,15 @@ public abstract class AbstractCacheRequestResponseComponent<K extends ICacheRequ
77 * @param cacheRequestResponses 77 * @param cacheRequestResponses
78 * @return 78 * @return
79 */ 79 */
80 - private List<T> filterMissCacheRequests(List<T> cacheRequestResponses) { 80 + private List<T> filterMissCacheRequests(List<T> cacheRequestResponses,int maxMissRequestCount) {
81 List<T> notCachedRequests = new ArrayList<>(); 81 List<T> notCachedRequests = new ArrayList<>();
82 for (T requestResponse : cacheRequestResponses) { 82 for (T requestResponse : cacheRequestResponses) {
83 if (requestResponse != null && requestResponse.getResponse() == null) { 83 if (requestResponse != null && requestResponse.getResponse() == null) {
84 notCachedRequests.add(requestResponse); 84 notCachedRequests.add(requestResponse);
85 } 85 }
  86 + if(notCachedRequests.size()>=maxMissRequestCount){
  87 + break;
  88 + }
86 } 89 }
87 return notCachedRequests; 90 return notCachedRequests;
88 } 91 }
@@ -55,7 +55,7 @@ public class CacheQuerySknInfoProductInfoBean extends AbstractCacheRequestRespon @@ -55,7 +55,7 @@ public class CacheQuerySknInfoProductInfoBean extends AbstractCacheRequestRespon
55 requests.add(new CacheQuerySknInfoProductInfo(new QuerySknInfo(productSkn))); 55 requests.add(new CacheQuerySknInfoProductInfo(new QuerySknInfo(productSkn)));
56 } 56 }
57 //2、调父类方法 57 //2、调父类方法
58 - this.bacthFillResponseWithCache(requests,true); 58 + this.bacthFillResponseWithCache(requests,true,productSkns.size());
59 59
60 //3、返回结果 60 //3、返回结果
61 return requests; 61 return requests;
@@ -37,7 +37,7 @@ public class CacheRecallRequestRecallResponseBean extends AbstractCacheRequestRe @@ -37,7 +37,7 @@ public class CacheRecallRequestRecallResponseBean extends AbstractCacheRequestRe
37 results.add(new CacheRecallRequestRecallResponse(request)); 37 results.add(new CacheRecallRequestRecallResponse(request));
38 } 38 }
39 //2、执行查询 39 //2、执行查询
40 - this.bacthFillResponseWithCache(results,false); 40 + this.bacthFillResponseWithCache(results,false,10);
41 41
42 //3、返回结果 42 //3、返回结果
43 return results; 43 return results;
@@ -49,10 +49,6 @@ public class CacheRecallRequestRecallResponseBean extends AbstractCacheRequestRe @@ -49,10 +49,6 @@ public class CacheRecallRequestRecallResponseBean extends AbstractCacheRequestRe
49 List<SearchParam> searchParams = new ArrayList<>(); 49 List<SearchParam> searchParams = new ArrayList<>();
50 for (CacheRecallRequestRecallResponse requestResponse : missCacheRequests) { 50 for (CacheRecallRequestRecallResponse requestResponse : missCacheRequests) {
51 searchParams.add(requestResponse.getRequest().searchParam()); 51 searchParams.add(requestResponse.getRequest().searchParam());
52 - //控制每次请求es的数量  
53 - if(searchParams.size()>=maxEsRequestCountPerTime){  
54 - break;  
55 - }  
56 } 52 }
57 //2、执行搜索 53 //2、执行搜索
58 List<SearchResult> searchResults = searchCommonService.doMutiSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX, searchParams); 54 List<SearchResult> searchResults = searchCommonService.doMutiSearch(ISearchConstants.INDEX_NAME_PRODUCT_INDEX, searchParams);
@@ -48,7 +48,7 @@ public class CacheRecallSknParamsRecallSknListBean extends AbstractCacheRequestR @@ -48,7 +48,7 @@ public class CacheRecallSknParamsRecallSknListBean extends AbstractCacheRequestR
48 requests.add(new CacheRecallSknParamsRecallSknList(recallSknParams)); 48 requests.add(new CacheRecallSknParamsRecallSknList(recallSknParams));
49 49
50 //2、执行父类方法 50 //2、执行父类方法
51 - this.bacthFillResponseWithCache(requests,false); 51 + this.bacthFillResponseWithCache(requests,false,1);
52 52
53 //3、判断 53 //3、判断
54 if(requests.size()==1 && requests.get(0).getResponse()!=null){ 54 if(requests.size()==1 && requests.get(0).getResponse()!=null){
1 package com.yoho.search.recall.scene.constants; 1 package com.yoho.search.recall.scene.constants;
2 2
  3 +
  4 +/**
  5 + * 缓存时间定义-单位秒
  6 + */
3 public class CacheTimeConstants { 7 public class CacheTimeConstants {
4 8
  9 +
5 public static final int COMMON = 10 * 60;//通用缓存 10 public static final int COMMON = 10 * 60;//通用缓存
6 11
7 public static final int BRAND_HEATVALUE = 1 * 60 * 60;//人气缓存 12 public static final int BRAND_HEATVALUE = 1 * 60 * 60;//人气缓存