Esempio n. 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);
                }
            });
        }
Esempio n. 2
0
 protected override void OnStart(string[] args)
 {
     log.Info("Start service");
     try
     {
         InitializeComponent();
         cancelTokenSource                   = new CancellationTokenSource();
         Server.LogConnectionString          = ConfigurationManager.AppSettings["LogConnectionString"];
         QT.Entities.Server.ConnectionString = connectionString;
         string rabbitMQServerName = ConfigurationManager.AppSettings["rabbitMQServerName"];
         workers        = new Worker[workerCount];
         rabbitMQServer = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);
         for (int i = 0; i < workerCount; i++)
         {
             log.InfoFormat("Start worker {i}", i.ToString());
             var worker = new Worker(refreshCacheProductInfoJobName, false, rabbitMQServer);
             workers[i] = worker;
             var  token      = this.cancelTokenSource.Token;
             Task workerTask = new Task(() =>
             {
                 var db = new QT.Entities.Data.SqlDb(this.connectionString);
                 RedisCacheProductInfo rediscacheProductForCompany = new RedisCacheProductInfo();
                 QT.Moduls.CrawlerProduct.Cache.CacheProductInfo cacheProductInfo = new QT.Moduls.CrawlerProduct.Cache.CacheProductInfo(db);
                 worker.JobHandler = (jobMss) =>
                 {
                     try
                     {
                         token.ThrowIfCancellationRequested();
                         QT.Entities.CrawlerProduct.RabbitMQ.MssRefreshCacheProductInfo mss = QT.Entities.CrawlerProduct.RabbitMQ.MssRefreshCacheProductInfo.FromJSON(QT.Entities.Common.ByteToString(jobMss.Data));
                         log.InfoFormat("Start run refresh company {0} : {1}", mss.CompanyID, mss.Domain);
                         int numberProduct = cacheProductInfo.RefreshAllCacheAllProduct(mss.CompanyID);
                         log.InfoFormat("End refresh company {0} : {1} {2} products", mss.CompanyID, mss.Domain, numberProduct);
                         return(true);
                     }
                     catch (OperationCanceledException opc)
                     {
                         log.Info("End worker");
                         return(false);
                     }
                 };
                 worker.Start();
             }, token);
             workerTask.Start();
             log.InfoFormat("Worker {0} started", i);
         }
     }
     catch (Exception ex)
     {
         log.Error("Start error", ex);
         throw;
     }
 }