예제 #1
0
        /// <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);
        }
예제 #2
0
        public bool SyncData(DataChangeMsg msg, ILog log, IndexSyncConfig config)
        {
            log.Error("未实现同步方法的消息\n" + JsonConvert.SerializeObject(msg));

            return(true);
        }