示例#1
0
        public void Run()
        {
            Task.Factory.StartNew(() =>
            {
                SqlDb sqlDb = new QT.Entities.Data.SqlDb(@"Data Source=42.112.28.93;Initial Catalog=QT_2;Persist Security Info=True;User ID=wss_price;Password=HzlRt4$$axzG-*UlpuL2gYDu;connection timeout=200");
                QT.Moduls.CrawlerProduct.Cache.CacheProductInfo cacheProductInfo = new QT.Moduls.CrawlerProduct.Cache.CacheProductInfo(sqlDb);

                while (true)
                {
                    BasicGetResult result = this.GetMessage();
                    if (result != null)
                    {
                        string str = System.Text.Encoding.UTF8.GetString(result.Body);
                        if (str != "")
                        {
                            MssRefreshCacheProductInfo job = MssRefreshCacheProductInfo.FromJSON(str);
                            log.Info(string.Format("Get Message For Company:{0} {1}", job.CompanyID, job.Domain));

                            RedisCacheProductInfo rediscacheProductForCompany = RedisCacheProductInfo.Instance();
                            int ProductCache = cacheProductInfo.RefreshAllCacheAllProduct(job.CompanyID);
                            log.Info(string.Format("Company:{0} NumberProductCache:{1}", job.CompanyID, job.Domain));
                        }
                    }
                    this.tokenStop.WaitHandle.WaitOne(10000);
                }
            });
        }
示例#2
0
        protected override void OnStart(string[] args)
        {
            log.Info("Start service");
            try
            {
                InitializeComponent();
                cancelTokenSource = new CancellationTokenSource();
                string rabbitMQServerName = ConfigurationManager.AppSettings["rabbitMQ31ServerName"];
                workers        = new Worker[workerCount];
                rabbitMQServer = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);
                QT.Moduls.LogCassandra.LogCrawler logCass = new QT.Moduls.LogCassandra.LogCrawler();
                var db = new QT.Entities.Data.SqlDb(this.connectionString);
                for (int i = 0; i < workerCount; i++)
                {
                    log.InfoFormat("Start worker {i}", i.ToString());
                    var worker = new Worker(CrawlerProductLog, false, rabbitMQServer);
                    workers[i] = worker;
                    var  token      = this.cancelTokenSource.Token;
                    Task workerTask = new Task(() =>
                    {
                        worker.JobHandler = (updateDatafeedJob) =>
                        {
                            try
                            {
                                token.ThrowIfCancellationRequested();

                                QT.Entities.CrawlerProduct.RabbitMQ.MssLogCassandra mss = QT.Entities.CrawlerProduct.RabbitMQ.MssLogCassandra.GetDataFromMessage(updateDatafeedJob.Data);
                                logCass.SaveLogToCassandra(mss.log,
                                                           (QT.Moduls.LogCassandra.LogCode)mss.logCode,
                                                           (QT.Moduls.LogCassandra.TypeLog)mss.typeLog,
                                                           mss.data_id,
                                                           mss.data_second_id,
                                                           null,
                                                           mss.session);
                                log.InfoFormat("Log crawler company {0} : {1} ", mss.data_id, mss.data_second_id);
                                return(true);
                            }
                            catch (OperationCanceledException opc)
                            {
                                log.Info("End worker");
                                return(true);
                            }
                            catch (Exception ex01)
                            {
                                log.Info(ex01);
                                return(true);
                            }
                        };
                        worker.Start();
                    }, token);
                    workerTask.Start();
                    log.InfoFormat("Worker {0} started", i);
                }
            }
            catch (Exception ex)
            {
                log.Error("Start error", ex);
                throw;
            }
        }
示例#3
0
        /// <summary>
        /// PageNumber Is TextPage
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="row"></param>
        /// <param name="rowsPage"></param>
        /// <param name="processRow"></param>
        public void ProcessDataTableLarge(string sql, int rowsPage, ProcessRow processRow)
        {
            var pageName = 1;
            var iRow     = 0;

            string fullSql = sql + @"
OFFSET ((@PageNumber - 1) * @rowsPage) ROWS
FETCH NEXT @rowsPage ROWS ONLY";

            DataTable tbl = null;

            do
            {
                try
                {
                    tbl = this.GetTblData(fullSql, CommandType.Text, new SqlParameter[]
                    {
                        SqlDb.CreateParamteterSQL("PageNumber", pageName, SqlDbType.Int),
                        SqlDb.CreateParamteterSQL("rowsPage", rowsPage, SqlDbType.Int),
                    });
                    foreach (DataRow variable in tbl.Rows)
                    {
                        iRow++;
                        bool bNext = processRow(variable, iRow);
                        if (bNext == false)
                        {
                            break;
                        }
                    }
                    log.Info(string.Format("Processed {0} rows at page {1}", tbl.Rows.Count, pageName));
                    pageName = pageName + 1;
                }
                catch (Exception exception)
                {
                    log.Error(exception);
                }
            } while (tbl == null || tbl.Rows.Count > 0);
            return;
        }
示例#4
0
 public CompanyAdapter(SqlDb sqlDb)
 {
     this.sqlDb = sqlDb;
 }
示例#5
0
 public RaoVatSQLAdapter(QT.Entities.Data.SqlDb sqlDb)
 {
     this.sqlDb = sqlDb;
 }
示例#6
0
 public ProductLogAddAdapter(SqlDb sqlDb)
 {
     this.sqlDb = sqlDb;
     this.log   = log4net.LogManager.GetLogger(typeof(ProductLogAddAdapter));
 }