/// <summary> /// 同步器 /// </summary> /// <param name="msg"></param> /// <param name="log"></param> /// <param name="config"></param> /// <returns></returns> public bool SyncData(DataChangeMsg msg, ILog log, IndexSyncConfig config) { string msgstr = JsonConvert.SerializeObject(msg); try { string indexName = config.IndexName.ToLower(); if (msg.Type == "D") { //删除 log.Info("开始删除数据:" + msgstr); //var path = new DocumentPath<TEs>(msg.PkValue); var path = GetDocumentPath(msg, log); EsClient.Delete(path, n => n.Index(indexName)); log.Info("删除数据完成:" + msgstr); return(true); } //获取新数据 log.Info("开始获取新数据:" + msgstr); //var infos = DataTrackDl.GetDataChangeMsgs<TSql>(msg); var infos = GetAllList(msg, log); //转换es数据 var esInfos = TSqltoTEs(infos, log); //同步 log.Info("开始同步数据:" + msgstr); if (infos != null && infos.Count > 0) { //同步到es var result = EsClient.IndexMany(esInfos, indexName); if (result.ServerError != null) { log.Error("索引失败:" + result.ServerError.Error.Reason); return(false); } log.Info("同步数据完成:" + msgstr); } return(true); } catch (Exception ex) { log.Error("同步数据失败:" + msgstr, ex); } return(false); }
public bool SyncData(DataChangeMsg msg, ILog log, IndexSyncConfig config) { log.Error("未实现同步方法的消息\n" + JsonConvert.SerializeObject(msg)); return(true); }