Authored by hugufei

Merge branch 'master' into zf_dependency_opt

# Conflicts:
#	consumer/src/main/java/com/yoho/search/comsumer/mq/ProductMqListener.java
#	consumer/src/main/java/com/yoho/search/comsumer/mq/ProductPoolDetailMqListener.java
#	consumer/src/main/java/com/yoho/search/comsumer/mq/ProductPoolIndexService.java
#	consumer/src/main/java/com/yoho/search/comsumer/mq/StorageSkuIndexService.java
package com.yoho.search.comsumer.mq;
package com.yoho.search.mq;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.rabbitmq.client.Channel;
import com.yoho.error.event.SearchEvent;
import com.yoho.search.base.utils.*;
import com.yoho.search.comsumer.common.CostStatistics;
import com.yoho.search.comsumer.common.PerformanceMonitor;
import com.yoho.search.comsumer.index.IYohoIndexService;
import com.yoho.search.comsumer.utils.SpecialDealForIndex;
import com.yoho.search.core.es.utils.IgnoreSomeException;
import com.yoho.search.dal.service.*;
import com.yoho.search.common.CostStatistics;
import com.yoho.search.common.PerformanceMonitor;
import com.yoho.search.dal.model.Product;
import com.yoho.search.dal.model.ProductI;
import com.yoho.search.dal.model.ProductPrice;
import com.yoho.search.dal.model.StorageSku;
import com.yoho.search.dal.service.*;
import com.yoho.search.index.productIndex.IProductIndexBuildService;
import com.yoho.search.index.service.IYohoIndexService;
import com.yoho.search.utils.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ... @@ -23,8 +22,6 @@ import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
... ... @@ -49,6 +46,8 @@ public class ProductMqListener extends AbstractMqListener implements ChannelAwar
private IYohoIndexService yohoIndexService;
@Autowired
private ProductPriceService productPriceService;
@Autowired
private IProductIndexBuildService productIndexBuildService;
static PerformanceMonitor updateProductIToEsMonitor = new PerformanceMonitor("UpdateProductIToEs");
... ... @@ -117,23 +116,9 @@ public class ProductMqListener extends AbstractMqListener implements ChannelAwar
//处理isNew(规则:首次上架7天内展示且折扣率小于88折)
productI.setIsnew("N");
try {
long dateCount = Integer.MAX_VALUE;
if (productI.getFirstShelveTime() > 0) {
dateCount = DateUtil.daysBetween(new Date(productI.getFirstShelveTime() * 1000L), new Date());
}
if (dateCount <= 7) {
ProductPrice productPrice = productPriceService.getById(productId);
if (productPrice != null) {
//计算折扣
Double discount = MathUtils.getDevideValue(productPrice.getSalesPrice(), productPrice.getMarketPrice(), 2, RoundingMode.DOWN);
if (discount >= 0.88) {
productI.setIsnew("Y");
}
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
ProductPrice productPrice = productPriceService.getById(productId);
if(productPrice!=null&&productIndexBuildService.isNew(productI.getFirstShelveTime(),productPrice.getMarketPrice(),productPrice.getSalesPrice())){
productI.setIsnew("Y");
}
logger.info("[step3=getProductI success][key={}][productId={}][cost={}ms]", key, productId, costStatistics.getCost());
... ...
package com.yoho.search.comsumer.mq;
package com.yoho.search.mq;
import com.alibaba.fastjson.JSONObject;
import com.rabbitmq.client.Channel;
import com.yoho.search.comsumer.index.IYohoIndexService;
import com.yoho.search.comsumer.service.IProductIndexBuildService;
import com.yoho.search.base.utils.ConvertUtils;
import com.yoho.search.base.utils.EventReportEnum;
import com.yoho.search.dal.service.ProductPriceService;
import com.yoho.search.core.es.utils.IgnoreSomeException;
import com.yoho.error.event.SearchEvent;
import com.yoho.search.base.utils.ISearchConstans;
import com.yoho.search.common.CostStatistics;
import com.yoho.search.dal.model.ProductPoolDetail;
import com.yoho.search.dal.model.ProductPoolDetailSkn;
import com.yoho.search.dal.service.ProductPoolDetailService;
import com.yoho.search.dal.service.ProductService;
import com.yoho.search.index.service.IYohoIndexService;
import com.yoho.search.utils.ConvertUtils;
import com.yoho.search.utils.EventReportEnum;
import com.yoho.search.utils.ISearchConstans;
import com.yoho.search.utils.IgnoreSomeException;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ... @@ -22,9 +20,7 @@ import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.*;
/**
* Created by wangnan on 2016/8/17.
... ... @@ -44,17 +40,8 @@ public class ProductPoolDetailMqListener extends AbstractMqListener implements C
private IYohoIndexService indexService;
@Autowired
private ProductPriceService productPriceService;
@Autowired
private IProductIndexBuildService iProductIndexBuildService;
@Autowired
private ProductPoolIndexService productPoolIndexService;
// @Autowired
// private Product15DaySalesNumService product15DaySalesNumService;
@Override
public void onMessage(Message message, Channel channel) throws Exception {
try {
... ... @@ -88,7 +75,7 @@ public class ProductPoolDetailMqListener extends AbstractMqListener implements C
* @param key
*/
public void updateData(final Map data, final String key) {
long begin = System.currentTimeMillis();
CostStatistics costStatistics = new CostStatistics();
ProductPoolDetail productPoolDetail = new ProductPoolDetail();
productPoolDetail = (ProductPoolDetail) ConvertUtils.toJavaBean(productPoolDetail, data);
if (productPoolDetail == null || productPoolDetail.getId() == null) {
... ... @@ -104,17 +91,17 @@ public class ProductPoolDetailMqListener extends AbstractMqListener implements C
} else if ("3".equals(productPoolDetail.getProductType())) {
productPoolDetail.setProductType("1");
}
//更新DB
//1)更新DB
productPoolDetailService.saveOrUpdate(productPoolDetail);
logger.info("[func=updateData][step=saveToBb][key={}][cost={}ms]", key, System.currentTimeMillis() - begin);
//更新ProductIndex
logger.info("[func=updateData][step(1)of(3)saveToBb][key={}][cost={}ms]", key, costStatistics.getCost());
//2)更新ProductIndex
updateProductIndex(productPoolDetail, System.currentTimeMillis(), key);
logger.info("[func=updateData][step=success][key={}][indexName={}][skn={}][cost={}ms]", key, ISearchConstans.INDEX_NAME_PRODUCT_INDEX, productPoolDetail.getProductSkn(),
(System.currentTimeMillis() - begin));
//更新ProductPoolIndex
logger.info("[func=updateData][step(2)of(3)update ProductIndex][key={}][indexName={}][skn={}][cost={}ms]", key, ISearchConstans.INDEX_NAME_PRODUCT_INDEX, productPoolDetail.getProductSkn(),
costStatistics.getCost());
//3)更新ProductPoolIndex
productPoolIndexService.updateProductPoolIndex(productPoolDetail.getId(), System.currentTimeMillis(), key);
logger.info("[func=updateData][step=success][key={}][indexName={}][skn={}][cost={}ms]", key, ISearchConstans.INDEX_NAME_PRODUCT_POOL, productPoolDetail.getProductSkn(),
(System.currentTimeMillis() - begin));
logger.info("[func=updateData][step(3)of(3)ProductPoolIndex][key={}][indexName={}][skn={}][cost={}ms]", key, ISearchConstans.INDEX_NAME_PRODUCT_POOL, productPoolDetail.getProductSkn(),
costStatistics.getCost());
}
/**
... ... @@ -133,18 +120,18 @@ public class ProductPoolDetailMqListener extends AbstractMqListener implements C
if (productPoolDetail == null || productPoolDetail.getId() == null) {
return;
}
//从DB中删除
//1)从DB中删除
productPoolDetailService.deleteByPrimaryKey(Integer.valueOf(id));
logger.info("[func=deleteData][step=deleteFromBb][key={}][cost={}ms]", key, System.currentTimeMillis() - begin);
//删除ProductIndex中poolId字段
logger.info("[func=deleteData][step(1)of(3)deleteFromBb][key={}][cost={}ms]", key, System.currentTimeMillis() - begin);
//2)删除ProductIndex中poolId字段
if (productPoolDetail != null && productPoolDetail.getProductSkn() != null) {
updateProductIndex(productPoolDetail, begin, key);
logger.info("[func=deleteData][step=success][key={}][indexName={}][id={}][cost={}ms]", key, ISearchConstans.INDEX_NAME_PRODUCT_INDEX, id,
logger.info("[func=deleteData][step(2)of(3) delete ProductIndex][key={}][indexName={}][id={}][cost={}ms]", key, ISearchConstans.INDEX_NAME_PRODUCT_INDEX, id,
(System.currentTimeMillis() - begin));
}
//删除ProductPool的记录
indexService.deleteIndexData(ISearchConstans.INDEX_NAME_PRODUCT_POOL, productPoolDetail.getId().toString());
logger.info("[func=deleteData][step=success][key={}][indexName={}][id={}][cost={}ms]", key, ISearchConstans.INDEX_NAME_PRODUCT_POOL, id,
//3)删除ProductPool的记录
productPoolIndexService.deleteProductPoolIndex(productPoolDetail.getId(), System.currentTimeMillis(), key);
logger.info("[func=deleteData][step(3)of(3) delete ProductPool][key={}][indexName={}][id={}][cost={}ms]", key, ISearchConstans.INDEX_NAME_PRODUCT_POOL, id,
(System.currentTimeMillis() - begin));
}
... ... @@ -157,17 +144,31 @@ public class ProductPoolDetailMqListener extends AbstractMqListener implements C
*/
private void updateProductIndex(ProductPoolDetail productPoolDetail, long begin, final String key) {
if (productPoolDetail.getProductSkn() != null) {
//查视图productPoolDetailSkns,通过productId更新ProductIndex中的poolId字段数据
ProductPoolDetailSkn productPoolDetailSkns = productPoolDetailService.getProductPoolDetailBySkn(productPoolDetail.getProductSkn());
if (productPoolDetailSkns != null) {
Integer productId = productService.selectProductIdBySkn(productPoolDetail.getProductSkn());
if (productId != null) {
Map<String, Object> indexData = new HashMap<String, Object>();
indexData.put("productId", productId);
indexData.put("poolId", productPoolDetailSkns.getPoolId());
this.updateProductIndexWithDataMap(indexData, productId, key, begin);
//把每个skn对应的多个productpool的poolid拼起来
List<ProductPoolDetail> productPoolDetails = productPoolDetailService.selectByProductSkn(productPoolDetail.getProductSkn());
//先根据poolId去重
Set<Integer> productPoolDetailsSet = new HashSet<>();
List<ProductPoolDetail> productPoolDetailsTemp = new ArrayList<>();
for (ProductPoolDetail p : productPoolDetails) {
if(!productPoolDetailsSet.contains(p.getPoolId())){
productPoolDetailsSet.add(p.getPoolId());
productPoolDetailsTemp.add(p);
}
}
StringBuffer poolId = new StringBuffer();
for (ProductPoolDetail p : productPoolDetailsTemp) {
if (p.getProductType().equals("1")) {
poolId.append(p.getPoolId());
poolId.append(",");
}
}
Integer productId = productService.selectProductIdBySkn(productPoolDetail.getProductSkn());
if (productId != null) {
Map<String, Object> indexData = new HashMap<String, Object>();
indexData.put("productId", productId);
indexData.put("poolId", poolId.toString());
this.updateProductIndexWithDataMap(indexData, productId, key, begin);
}
}
}
... ...
package com.yoho.search.comsumer.mq;
package com.yoho.search.mq;
import com.alibaba.fastjson.JSONObject;
import com.yoho.search.comsumer.index.IYohoIndexService;
import com.yoho.search.base.utils.EventReportEnum;
import com.yoho.search.comsumer.common.CostStatistics;
import com.yoho.search.dal.service.ProductPoolService;
import com.yoho.search.dal.model.ProductPool;
import com.yoho.search.core.es.utils.IgnoreSomeException;
import com.yoho.error.event.SearchEvent;
import com.yoho.search.base.utils.ISearchConstans;
import com.yoho.search.core.es.model.ESBluk;
import com.yoho.search.comsumer.utils.SpecialDealForIndex;
import com.yoho.search.common.CostStatistics;
import com.yoho.search.dal.model.ProductPool;
import com.yoho.search.dal.service.ProductPoolService;
import com.yoho.search.index.model.ESBluk;
import com.yoho.search.index.productPool.IProductPoolBuildService;
import com.yoho.search.index.service.IYohoIndexService;
import com.yoho.search.utils.EventReportEnum;
import com.yoho.search.utils.ISearchConstans;
import com.yoho.search.utils.IgnoreSomeException;
import com.yoho.search.utils.SpecialDealForIndex;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -42,21 +43,27 @@ public class ProductPoolIndexService implements ApplicationEventPublisherAware {
@Autowired
private ProductPoolService productPoolService;
@Autowired
private IYohoIndexService indexService;
private IProductPoolBuildService productPoolBuildService;
private ArrayBlockingQueue<Integer> IdQueue = new ArrayBlockingQueue<Integer>(200);
@Autowired
private IYohoIndexService indexService;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.publisher = applicationEventPublisher;
}
private ExecutorService executorService = Executors.newSingleThreadExecutor();
private ArrayBlockingQueue<Integer> IdUpdateQueue = new ArrayBlockingQueue<Integer>(200);
private ArrayBlockingQueue<Integer> IdDeleteQueue = new ArrayBlockingQueue<Integer>(200);
private ExecutorService updateExecutorService = Executors.newSingleThreadExecutor();
private ExecutorService deleteExecutorService = Executors.newSingleThreadExecutor();
@PostConstruct
void init() {
executorService.submit(new Runnable() {
updateExecutorService.submit(new Runnable() {
@Override
public void run() {
while (true) {
... ... @@ -68,8 +75,19 @@ public class ProductPoolIndexService implements ApplicationEventPublisherAware {
}
}
}
;
});
deleteExecutorService.submit(new Runnable() {
@Override
public void run() {
while (true) {
try {
long threadSleep = doBulkDeleteProductPoolIndex();
Thread.sleep(threadSleep);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}
});
}
... ... @@ -85,7 +103,25 @@ public class ProductPoolIndexService implements ApplicationEventPublisherAware {
if (id == null) {
return;
}
IdQueue.put(id);
IdUpdateQueue.put(id);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
/**
* 按id删除索引数据
*
* @param id
* @param begin
* @param key
*/
public void deleteProductPoolIndex(Integer id, long begin, final String key) {
try {
if (id == null) {
return;
}
IdDeleteQueue.put(id);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
... ... @@ -100,9 +136,9 @@ public class ProductPoolIndexService implements ApplicationEventPublisherAware {
List<ProductPool> ProductPoolList = new ArrayList<ProductPool>();
// 1、根据id去取数据库对象
List<Integer> ids = this.getElementsFromArrayBlockingQueue(IdQueue, 200);
List<Integer> ids = this.getElementsFromArrayBlockingQueue(IdUpdateQueue, 200);
if (!ids.isEmpty()) {
ProductPoolList.addAll(productPoolService.selectListByIds(ids));
ProductPoolList.addAll(productPoolBuildService.getProductPoolsByIds(ids));
logger.info("doBulkUpdateProductPoolIndex[selectListByIds], ProductPoolList size is [{}], cost [{}]ms", ProductPoolList.size(), costStatistics.getCost());
}
... ... @@ -129,6 +165,40 @@ public class ProductPoolIndexService implements ApplicationEventPublisherAware {
}
}
/**
* 批量删除ProductPool数据
*/
private long doBulkDeleteProductPoolIndex() {
try {
CostStatistics costStatistics = new CostStatistics();
// 1、根据id去取数据库对象
List<Integer> ids = this.getElementsFromArrayBlockingQueue(IdDeleteQueue, 200);
// 2、没数据直接返回[并让线程休息1000ms]
if (ids.isEmpty()) {
return THREAD_SLEEP_IDLE;
}
// 3、批量更新ES
this.deleteProductPoolIndexByList(ids);
logger.info("doBulkDeleteProductPoolIndex[updateToEs], ids size is [{}], cost [{}]ms", ids.size(), costStatistics.getCost());
// 4、打印总耗时
logger.info("doBulkDeleteProductPoolIndex end , costStatistics is [{}] ", costStatistics.getCostStatisticsString());
return THREAD_SLEEP_WORK;// 让线程休息50ms继续工作
} catch (Exception e) {
publisher.publishEvent(new SearchEvent(EventReportEnum.PRODUCTPOOLINDEXSERVICE_DELETEPRODUCTPOOL.getEventName(),
EventReportEnum.PRODUCTPOOLINDEXSERVICE_DELETEPRODUCTPOOL.getFunctionName(), EventReportEnum.PRODUCTPOOLINDEXSERVICE_DELETEPRODUCTPOOL.getMoudleName(),
"exception", IgnoreSomeException.filterSomeException(e), null));
logger.error(e.getMessage(), e);
return THREAD_SLEEP_WORK;
}
}
private Map<String, Object> beanToMap(ProductPool productPool) {
JSONObject josnoJsonObject = (JSONObject) JSONObject.toJSON(productPool);
return josnoJsonObject;
... ... @@ -159,4 +229,19 @@ public class ProductPoolIndexService implements ApplicationEventPublisherAware {
logger.error(e.getMessage(), e);
}
}
public void deleteProductPoolIndexByList(List<Integer> ids) {
try {
if (ids == null || ids.isEmpty()) {
return;
}
List<ESBluk> results = new ArrayList<ESBluk>();
for (Integer id : ids) {
results.add(new ESBluk(null, id.toString(), indexName, indexName, true));
}
indexService.bulk(results);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}
... ...
package com.yoho.search.comsumer.mq;
package com.yoho.search.mq;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.annotation.PostConstruct;
import com.alibaba.fastjson.JSONObject;
import com.yoho.search.comsumer.common.CostStatistics;
import com.yoho.search.dal.model.StorageSku;
import com.yoho.error.event.SearchEvent;
import com.yoho.search.base.utils.EventReportEnum;
import com.yoho.search.base.utils.ISearchConstans;
import com.yoho.search.core.es.model.ESBluk;
import com.yoho.search.comsumer.index.IYohoIndexService;
import com.yoho.search.dal.service.StorageSkuService;
import com.yoho.search.comsumer.utils.SpecialDealForIndex;
import com.yoho.search.core.es.utils.IgnoreSomeException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -18,13 +16,18 @@ import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.alibaba.fastjson.JSONObject;
import com.yoho.error.event.SearchEvent;
import com.yoho.search.common.CostStatistics;
import com.yoho.search.dal.model.StorageSku;
import com.yoho.search.dal.service.StorageSkuService;
import com.yoho.search.index.model.ESBluk;
import com.yoho.search.index.service.IYohoIndexService;
import com.yoho.search.index.storagesku.IStorageSkuService;
import com.yoho.search.utils.EventReportEnum;
import com.yoho.search.utils.ISearchConstans;
import com.yoho.search.utils.IgnoreSomeException;
import com.yoho.search.utils.SpecialDealForIndex;
@Component
public class StorageSkuIndexService implements ApplicationEventPublisherAware {
... ... @@ -37,8 +40,12 @@ public class StorageSkuIndexService implements ApplicationEventPublisherAware {
private StorageSkuService storageSkuService;
@Autowired
private IYohoIndexService indexService;
// @Autowired
// private Product15DaySalesNumService product15DaySalesNumService;
/**
* 代码构建storagesku服务 -- amos.shan add on 2016-10-28
*/
@Autowired
private IStorageSkuService storageSkuServiceImpl;
// 按Sku更新库存
private ArrayBlockingQueue<Integer> productSkuQueue = new ArrayBlockingQueue<Integer>(200);
... ... @@ -89,21 +96,33 @@ public class StorageSkuIndexService implements ApplicationEventPublisherAware {
// 1、根据sku去取数据库对象
List<Integer> productSkus = this.getElementsFromArrayBlockingQueue(productSkuQueue, 200);
if (!productSkus.isEmpty()) {
storageSkuList.addAll(storageSkuService.selectListProductSkus(productSkus));
if (ISearchConstans.BUILD_STORAGESKUINDEX_USE_CODE) {
storageSkuList.addAll(storageSkuServiceImpl.getStorageSkuIndexBySkus(productSkus));
} else {
storageSkuList.addAll(storageSkuService.selectListProductSkus(productSkus));
}
logger.info("doBulkUpdateStorageSkuIndex[getListBySku], storageSkuList size is [{}], cost [{}]ms", storageSkuList.size(), costStatistics.getCost());
}
// 2、根据skc去取数据库对象
List<Integer> goodsIds = this.getElementsFromArrayBlockingQueue(goodsIdQueue, 200);
if (!goodsIds.isEmpty()) {
storageSkuList.addAll(storageSkuService.selectListByGoodsIds(goodsIds));
if (ISearchConstans.BUILD_STORAGESKUINDEX_USE_CODE) {
storageSkuList.addAll(storageSkuServiceImpl.getStorageSkuIndexBySkcs(goodsIds));
} else {
storageSkuList.addAll(storageSkuService.selectListByGoodsIds(goodsIds));
}
logger.info("doBulkUpdateStorageSkuIndex[getListBySkc], storageSkuList size is [{}], cost [{}]ms", storageSkuList.size(), costStatistics.getCost());
}
// 3、根据skn去取数据库对象
List<Integer> productIds = this.getElementsFromArrayBlockingQueue(productIdQueue, 200);
if (!productIds.isEmpty()) {
storageSkuList.addAll(storageSkuService.selectListByProductIds(productIds));
if (ISearchConstans.BUILD_STORAGESKUINDEX_USE_CODE) {
storageSkuList.addAll(storageSkuServiceImpl.getStorageSkuIndexBySkns(productIds));
} else {
storageSkuList.addAll(storageSkuService.selectListByProductIds(productIds));
}
logger.info("doBulkUpdateStorageSkuIndex[getListBySkn], storageSkuList size is [{}], cost [{}]ms", storageSkuList.size(), costStatistics.getCost());
}
... ... @@ -226,7 +245,7 @@ public class StorageSkuIndexService implements ApplicationEventPublisherAware {
}
List<ESBluk> results = new ArrayList<ESBluk>();
for (StorageSku storageSku : storageSkuList) {
//特殊处理storageSku的某些字段
// 特殊处理storageSku的某些字段
SpecialDealForIndex.specialDealStorageSku(storageSku);
results.add(new ESBluk(JSONObject.toJSONString(this.beanToMap(storageSku)), storageSku.getProductSku().toString(), indexName, indexName, false));
}
... ...
... ... @@ -5,6 +5,11 @@ redis.proxy.auth=
redis.readonly.proxy.address=192.168.102.222
redis.readonly.proxy.port=6379
redis.readonly.proxy.auth=
bigDataRedis-search.proxy.address=192.168.102.222
bigDataRedis-search.proxy.port=6379
bigDataRedis-search.proxy.auth=
#mq
search.mq.server=192.168.102.224
... ... @@ -32,6 +37,9 @@ build.productindex.batch.max.thread.size=10
build.productindex.test=false
build.productindex.use.code=true
#build storageskuIndex
build.storageskuindex.use.code=true
#big data redis
bigDataRedis-search.proxy.address=test-bigdata-redis-1903805580.cn-north-1.elb.amazonaws.com.cn
bigDataRedis-search.proxy.port=6379
... ...
... ... @@ -40,6 +40,9 @@ build.productindex.batch.max.thread.size=10
build.productindex.test=false
build.productindex.use.code=${build.productindex.use.code}
#build storageskuIndex
build.storageskuindex.use.code=${build.storageskuindex.use.code}
#tbl
tbl.product.private.key=a85bb0674e08986c6b115d5e3a4884fa
tbl.product.url=${tbl.product.url}
... ...