Ejemplo n.º 1
0
 public FrmMainSale()
 {
     InitializeComponent();
     sqlDb = new QT.Entities.Data.SqlDb(QT.Entities.Server.ConnectionStringCrawler);
     configXPathAdapter = new RaoVatSQLAdapter(sqlDb);
     foreach (var item in this.configXPathAdapter.GetListConfig())
     {
         this.dicConfigXPath.Add(item.ID, item);
     }
 }
Ejemplo 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);
                        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);
                                RedisCacheProductInfoAdapter rediscacheProductForCompany = RedisCacheProductInfoAdapter.Instance();
                                int numberProduct = cacheProductInfo.ReloadCacheForCompany(mss.CompanyID, mss.Domain);
                                log.InfoFormat("End refresh company {0} : {1} {2} products", mss.CompanyID, mss.Domain, numberProduct);
                                return(true);
                            }
                            catch (OperationCanceledException opc)
                            {
                                log.Info("End worker");
                                return(true);
                            }
                        };
                        worker.Start();
                    }, token);
                    workerTask.Start();
                    log.InfoFormat("Worker {0} started", i);
                }
            }
            catch (Exception ex)
            {
                log.Error("Start error", ex);
                throw;
            }
        }