public void Execute(IJobExecutionContext context) { try { var sw = new Stopwatch(); sw.Start(); var userDatas = ProductCacheDal.GetProductRecommendByUserId(); var defaultDatas = ProductCacheDal.GetCommonRecommend(); var needRefreshPids = userDatas.Union(defaultDatas).Distinct().ToList(); var referData = DateTime.Now.Subtract(TimeSpan.FromHours(1)); if (!needRefreshPids.Any()) { Logger.Info("bi推荐产品刷新到esjob执行,并没有找到需要更新的数据"); } else { Logger.Info($"bi推荐产品刷新到esjob开始执行,一共{needRefreshPids.Count}个产品"); using (var client = new CacheClient()) { foreach (var pids in needRefreshPids.Split(1).Select(r => r.ToList())) { var switcher = ProductCacheDal.SelectRuntimeSwitchBySwitchName(); if (switcher == "run") { var esresult = client.RefreshProductRecommendEsCacheByPids(pids); if (!esresult.Success || !esresult.Result) { Logger.Error($"调用bi推荐产品刷新到es接口失败", esresult.Exception.InnerException); } } else { return; } } } using (var client = new ProductSearchClient()) { var delResult = client.DeleteOldProductEs(referData, ExpiredEsDataType.Recommend); if (!delResult.Success || !delResult.Result) { Logger.Error($"调用bi推荐产品删除es过期数据接口失败", delResult.Exception.InnerException); } } } sw.Stop(); Logger.Info($"bi推荐产品刷新到esjob执行结束,耗时{sw.ElapsedMilliseconds}"); } catch (Exception ex) { Logger.Error("bi推荐产品刷新到es失败", ex); } }
public void Execute(IJobExecutionContext context) { mgIndex++; Logger.Info($"启动任务=>{mgIndex}"); var dt = DateTime.Now; var isDeleteOld = true; var cnt = ProductCacheDal.GetProductEsCount(); Logger?.Info($"RGZ{mgIndex}=更新产品总数为:" + cnt); if (cnt == 0) { return; } var batchCnt = 500; var pageCnt = Math.Ceiling((double)cnt / batchCnt); for (var i = 1; i <= pageCnt; i++) { var pids = ProductCacheDal.GetProductEsPids(batchCnt, i); using (var client = new ProductSearchClient()) { var result = client.RebuildProductEs(pids); if (!result.Success) { using (var client2 = new ProductSearchClient()) { Thread.Sleep(200); result = client2.RebuildProductEs(pids); if (!result.Success) { Logger?.Warn($"RGZ{mgIndex}={i}=失败,不删除老数据:{result.ErrorCode};{result.ErrorMessage}"); isDeleteOld = false; continue; } } } } Logger?.Info($"RGZ{mgIndex}={i}=成功"); } if (!isDeleteOld) { Logger?.Info($"RGZ{mgIndex}=有更新错误的数据,不删除老数据"); return; } //防止更新延迟误删 Thread.Sleep(TimeSpan.FromMinutes(1)); using (var client3 = new ProductSearchClient()) { var deleteResult = client3.DeleteOldProductEs(dt); if (!deleteResult.Success) { Logger?.Info($"RGZ{mgIndex}=删除老数据出错"); } } Logger?.Info($"RGZ{mgIndex}全部成功"); return; }