public void Start() { _log.InfoFormat("Start consumer FindNew"); while (true) { try { _token.ThrowIfCancellationRequested(); JobCompanyCrawler jobCompanyCrawler = GetJob(); if (jobCompanyCrawler != null) { if (jobCompanyCrawler.CheckRunning && CheckOtherRunning(jobCompanyCrawler.CompanyId)) { _log.Info(string.Format("Other running company: {0}", jobCompanyCrawler)); } else if (!_productAdapter.AllowCrawlFindNew(jobCompanyCrawler.CompanyId)) { _log.Info("Not allow crawler"); _redisWaitCrawler.DeleteWaitFindNew(new List <long> { jobCompanyCrawler.CompanyId }); } else { using (var worker = new WorkerFindNew(jobCompanyCrawler.CompanyId, _nameThread)) { worker.StartCrawler(); } } } else { Thread.Sleep(60000); _log.Info("No company to crawler"); } } catch (OperationCanceledException task) { break; } catch (Exception ex1) { _log.Error(ex1); } } }