Ejemplo n.º 1
0
        public static void PushDownloadHtml(IEnumerable <string> domains)
        {
            SqlDb          sql            = new SqlDb(ConfigStatic.ProductConnection);
            ProductAdapter productAdapter = new ProductAdapter(sql);

            foreach (var domain in domains)
            {
                ProducerBasic producerBasic = new ProducerBasic(RabbitMQManager.GetRabbitMQServer(ConfigStatic.KeyRabbitMqCrlProductProperties),
                                                                ConfigStatic.GetQueueWaitDownloadHtml(domain));
                string queryData = string.Format(@"
                        Select Id, DetailUrl 
                        From Product 
                        Where Company = {0}
                        Order by Id
                        "
                                                 , productAdapter.GetCompanyIdByDomain(domain));
                sql.ProcessDataTableLarge(queryData,
                                          10000, (Row, iRow) =>
                {
                    producerBasic.PublishString(new JobDownloadHtml()
                    {
                        ProductId = Convert.ToInt64(Row["Id"]),
                        DetailUrl = Convert.ToString(Row["DetailUrl"]),
                        Domain    = domain
                    }.GetJson());
                });
            }
        }
Ejemplo n.º 2
0
        public void StartRun()
        {
            Task.Factory.StartNew(() =>
            {
                try
                {
                    InitializeComponent();
                    var cancelUpdateDataFeedTokenSource = new CancellationTokenSource();
                    string connectionString             = ConfigurationManager.AppSettings["ConnectionString"];
                    Server.LogConnectionString          = ConfigurationManager.AppSettings["LogConnectionString"];
                    QT.Entities.Server.ConnectionString = connectionString;
                    string rabbitMQServerName           = ConfigurationManager.AppSettings["rabbitMQServerName"];
                    //worker
                    string updateDatafeedJobName = ConfigurationManager.AppSettings["updateDatafeedJobName"];
                    ;
                    var rabbitMQServer = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);

                    var worker      = new Worker(updateDatafeedJobName, false, rabbitMQServer);
                    Task workerTask = new Task(() =>
                    {
                        worker.JobHandler = (updateDatafeedJob) =>
                        {
                            return(true);
                        };
                        worker.Start();
                    });
                    workerTask.Start();
                }
                catch (Exception ex)
                {
                    Logger.Error("Start error", ex);
                    throw;
                }
            });
        }
Ejemplo n.º 3
0
        public void StartTest()
        {
            Server.ConnectionString        = ConfigCrawler.ConnectProduct;
            Server.ConnectionStringCrawler = ConfigCrawler.ConnectionCrawler;
            Server.LogConnectionString     = ConfigCrawler.ConnectLog;
            ConsumerReload consumer                = null;
            var            rabbitMqServer          = RabbitMQManager.GetRabbitMQServer(ConfigCrawler.KeyRabbitMqCrawler);
            var            cancellationTokenSource = new CancellationTokenSource();
            var            token = cancellationTokenSource.Token;

            Task.Factory.StartNew(() =>
            {
                consumer = new ConsumerReload(rabbitMqServer, ConfigCrawler.QueueCompanyReload, token);
                consumer.Start();
            }, token);
            var countNumber = 0;

            while (true)
            {
                Thread.Sleep(60000);
                countNumber++;
                if (countNumber > 5)
                {
                    consumer.Stop();
                }
            }
        }
Ejemplo n.º 4
0
        protected override void OnStart(string[] args)
        {
            InitializeComponent();

            try
            {
                _log.Info("Start service");

                var workerCount    = Common.Obj2Int(ConfigurationManager.AppSettings["WorkCount"], 1);
                var queue          = ConfigurationManager.AppSettings["QueueRun"];
                var rabbitMqServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");

                _cancelTokenSource = new CancellationTokenSource();
                _workers           = new WorkerChangePriceToHistoryPrice[workerCount];

                for (var i = 0; i < workerCount; i++)
                {
                    var j = i;
                    Task.Factory.StartNew(() =>
                    {
                        _log.InfoFormat("Start worker {0} queue: {1}", j, queue);
                        var worker = new WorkerChangePriceToHistoryPrice(queue, false, rabbitMqServer,
                                                                         _cancelTokenSource.Token);
                        _workers[j] = worker;
                        worker.Start();
                    });
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex);
            }
        }
        static void Main(string[] args)
        {
            string hostName        = "localhost";
            var    rabbitMQManager = new RabbitMQManager(hostName);

            while (true)
            {
                Console.WriteLine("Enter your name and surname");
                string fullName = Console.ReadLine();

                if (string.IsNullOrWhiteSpace(fullName))
                {
                    Console.WriteLine("You have to enter your name and surname!");
                    continue;
                }

                if (fullName == "q")
                {
                    return;
                }

                Console.WriteLine("[Start]");
                try
                {
                    rabbitMQManager.SendMessage(QueueNames.NAME_SURNAME, fullName);
                    Console.WriteLine("[Done]");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"There's an error: {ex.Message}");
                    Console.ReadKey();
                    return;
                }
            }
        }
Ejemplo n.º 6
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;
            }
        }
Ejemplo n.º 7
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            strQueue          = cboQueue.Text;
            cancelTokenSource = new CancellationTokenSource();
            string rabbitMQServerName = "rabbitMQ177";

            workers        = new Worker[workerCount];
            rabbitMQServer = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);
            for (int i = 0; i < workerCount; i++)
            {
                var worker = new Worker(strQueue, false, rabbitMQServer);
                workers[i] = worker;
                var  token      = this.cancelTokenSource.Token;
                Task workerTask = new Task(() =>
                {
                    worker.JobHandler = (updateDatafeedJob) =>
                    {
                        try
                        {
                            return(true);
                        }
                        catch (OperationCanceledException opc)
                        {
                            return(true);
                        }
                        catch (Exception ex01)
                        {
                            return(true);
                        }
                    };
                    worker.Start();
                }, token);
                workerTask.Start();
            }
        }
Ejemplo n.º 8
0
        public static void PushParseFromNoSql(IEnumerable <string> domains)
        {
            NoSqlAdapter noSqlAdapter = NoSqlAdapter.GetInstance();

            foreach (var domain in domains)
            {
                Task.Factory.StartNew(() =>
                {
                    int iCount = 0;
                    var producerBasicWaitPs = new ProducerBasic(RabbitMQManager.GetRabbitMQServer(ConfigStatic.KeyRabbitMqCrlProductProperties), ConfigStatic.GetQueueParse(domain));
                    noSqlAdapter.ProcessAllIdProductByCompany(domain, (obj, productId) =>
                    {
                        iCount++;
                        producerBasicWaitPs.PublishString(new JobParse()
                        {
                            Id = productId
                        }.GetJson());

                        if (iCount % 10 == 0)
                        {
                            log.Info(string.Format("Pushed {0} mss of {1}", iCount, domain));
                        }
                    });
                    log.Info(string.Format("Pushed all data for company {0} {1}", domain, iCount));
                });
            }
            Thread.Sleep(10000000);
        }
Ejemplo n.º 9
0
        public void PushCompanyDownload(long companyId)
        {
            Company cmp   = new Company(companyId);
            string  queue = Config.QueueWaitDownloadHtml + "." + cmp.Domain;


            _publisherJob = ProducerData.Instance(Config.RabbitMQServerComment);

            RabbitMQServer rabbitMqServer = RabbitMQManager.GetRabbitMQServer(Config.RabbitMQServerComment);
            var            Chanel         = rabbitMqServer.CreateChannel();

            Chanel.QueueDeclare(queue, true, false, false, null);

            var       productAdapter = new SqlDb(QT.Entities.Server.ConnectionString);
            DataTable tblProduct;
            var       page = 1;

            do
            {
                const string query = @"SELECT     ID, DetailUrl
FROM            Product
WHERE        Company = @COmpanyID 
ORDER BY ID
OFFSET ((@Page-1)*10000) ROWS
FETCH NEXT 10000 ROWS ONLY
";
                tblProduct = productAdapter.GetTblData(query, CommandType.Text, new SqlParameter[]
                {
                    SqlDb.CreateParamteterSQL("@Page", page++, SqlDbType.Int),
                    SqlDb.CreateParamteterSQL("@CompanyID", companyId, SqlDbType.BigInt)
                });
                PushJob(tblProduct, companyId, queue);
            } while (tblProduct.Rows.Count > 0);
        }
Ejemplo n.º 10
0
        private static void Main(string[] args)
        {
            string hostName        = "localhost";
            var    rabbitMQManager = new RabbitMQManager(hostName);

            while (true)
            {
                Console.WriteLine(">>> Enter a message which you want to send or type 'q' to exist app. <<<");
                string userMessage = Console.ReadLine();

                if (string.IsNullOrWhiteSpace(userMessage))
                {
                    Console.WriteLine("You have to type a message.");
                    continue;
                }

                if (userMessage == "q")
                {
                    return;
                }

                Console.WriteLine("[Start]");
                try
                {
                    rabbitMQManager.SendMessage(QueueNames.HELLO_WORLD, userMessage);
                    Console.WriteLine("[Done]");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"[Something went wrong: {ex.Message}]");
                    Console.ReadKey();
                    return;
                }
            }
        }
Ejemplo n.º 11
0
 protected override void OnStart(string[] args)
 {
     try
     {
         _workers = new WorkerBasic[_workerCount]; _rabbitMqServer = RabbitMQManager.GetRabbitMQServer(ConfigRabbitMqIndividualCategoryWebsites.RabbitMqServerName);
         for (var i = 0; i < _workerCount; i++)
         {
             var worker = new WorkerBasic(_rabbitMqServer, ConfigRabbitMqIndividualCategoryWebsites.QueueRootProductAnalyzed);
             _workers[i] = worker;
             var workerTask = new Task(() =>
             {
                 worker.JobHandler = (rootProductJob) =>
                 {
                     try
                     {
                         RootProductAnalyzed(rootProductJob);
                     }
                     catch (Exception exception)
                     {
                         Log.Error("Execute Job Error.", exception);
                     }
                 };
                 worker.Start();
             });
             workerTask.Start();
             Log.InfoFormat("Worker {0} started", i);
         }
     }
     catch (Exception exception)
     {
         Log.Error("Start error", exception);
         throw;
     }
 }
Ejemplo n.º 12
0
        public static void RePushThumb()
        {
            SqlDb         sqlDb         = new SqlDb(ConfigImbo.ConnectionProduct);
            ProducerBasic producerBasic = new ProducerBasic(RabbitMQManager.GetRabbitMQServer(ConfigImbo.KeyRabbitMqTransferImbo),
                                                            "Img.Product.Thumb");

            sqlDb.ProcessDataTableLarge(
                @"select ImageId, Id
from product
where valid = 1
order by Id", 10000, (rowData, iRow) =>
            {
                string imgId = Common.Obj2String(rowData["ImageId"]);
                long Id      = Common.Obj2Int64(rowData["Id"]);
                if (!string.IsNullOrEmpty(imgId))
                {
                    producerBasic.PublishString(new JobUploadedImg()
                    {
                        ImageId   = imgId,
                        ProductId = Id
                    }.ToJson());
                }
                return(true);
            });
        }
Ejemplo n.º 13
0
        internal void PushQueueUpdateAlexaSeoSystem()
        {
            SqlDb _sqlDb =
                new SqlDb("Data Source=192.168.100.178;Initial Catalog=QA_System;User ID=sa;Password=123456a@");
            string        queryCompany  = @"
select ID, Name as Domain
From Web
where LastUpdateAlexa is null 
--where IsCrawler = 1
";
            ProducerBasic producerBasic =
                new ProducerBasic(RabbitMQManager.GetRabbitMQServer(ConfigRun.KeyRabbitMqProduct),
                                  "UpdateAlexaCompanySeo");
            DataTable tblCompanyTable = _sqlDb.GetTblData(queryCompany, CommandType.Text, null);

            foreach (DataRow variable in tblCompanyTable.Rows)
            {
                producerBasic.PublishString(
                    Newtonsoft.Json.JsonConvert.SerializeObject(new MssUpdateAlexaCompany()
                {
                    CompanyId = Convert.ToInt64(variable["ID"]),
                    Domain    = Convert.ToString(variable["Domain"])
                }));
            }
            _log.Info("Pushed all job");
        }
Ejemplo n.º 14
0
        private void FindProduct()
        {
            var  rabbitMQServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
            var  worker         = new Worker("VatGia_Queue", false, rabbitMQServer);
            Task workerTask     = new Task(() =>
            {
                log.Info("Start consumer!");
                worker.JobHandler = (downloadImageJob) =>
                {
                    log.Info("Get job from MQ");
                    try
                    {
                        JobCrawler jobData = JobCrawler.Deserialize(downloadImageJob.Data);
                        if (jobData == null)
                        {
                            return(true);
                        }
                        return(true);
                    }
                    catch (Exception ex01)
                    {
                        log.Error("Exception:", ex01);
                        return(true);
                    }
                };
                worker.Start();
            });

            workerTask.Start();
        }
Ejemplo n.º 15
0
        static void Main(string[] args)
        {
            var rabbitMqServer = RabbitMQManager.GetRabbitMQServer(Config.RabbitMQServerComment);
            var consumer       = new ConsumerAsComment(rabbitMqServer);

            consumer.StartConsume();
        }
Ejemplo n.º 16
0
 public Runner()
 {
     _connectinString = ConfigurationManager.AppSettings["ConnectionString"];
     _producer        = new ProducerBasic(RabbitMQManager.GetRabbitMQServer("rabbitMqCrlProperties"), "Product.AdsScore.Deleted");
     MAX_HOUR_LOOP    = CommonConvert.Obj2Int(ConfigurationManager.AppSettings["MAX_HOUR_LOOP"]);
     HOUR_RUN         = CommonConvert.Obj2Int(ConfigurationManager.AppSettings["HOUR_RUN"]);
 }
Ejemplo n.º 17
0
        private void RunPush()
        {
            string groupName      = System.Configuration.ConfigurationManager.AppSettings["Exchange_CrawlerProduct"].ToString();
            string routingkey     = System.Configuration.ConfigurationManager.AppSettings["RoutingKey_CrawlerProductReload"].ToString();
            string connectToDb    = System.Configuration.ConfigurationManager.AppSettings["SqlConnectionToDb"].ToString();
            var    rabbitMQServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");

            while (true)
            {
                jobClient_ProductChangeImage = new JobClient(groupName, GroupType.Topic, routingkey, true, rabbitMQServer);
                SqlDb     sqlDb            = new SqlDb(connectToDb);
                DataTable tblCompanyReload = sqlDb.GetTblData("[prc_GetAllCompanyCrawlerData]", CommandType.StoredProcedure, new System.Data.SqlClient.SqlParameter[] {
                });
                if (tblCompanyReload != null)
                {
                    foreach (DataRow rowInfo in tblCompanyReload.Rows)
                    {
                        PushCompanyToQueue(new TaskCrawlerCompany()
                        {
                            iType       = 1,
                            IdCompany   = Convert.ToInt64(rowInfo["ID"]),
                            Domain      = Convert.ToString(rowInfo["Domain"]),
                            DatePushJob = Convert.ToDateTime(rowInfo["CurrentDate"])
                        });
                    }
                }
                Thread.Sleep(10000);
            }
        }
Ejemplo n.º 18
0
        private void PushListIdCompanyToServiceDownloadImage()
        {
            var rabbitMqServer         = RabbitMQManager.GetRabbitMQServer(ConfigImages.RabbitMqServerName);
            var jobClientDownloadImage = new JobClient(ConfigImages.ImboExchangeImages, GroupType.Topic, ConfigImages.ImboRoutingKeyDownloadImageCompany, true, rabbitMqServer);

            var listIdCompany = rbListIdCompany.Text.Split('\n');

            foreach (var item in listIdCompany)
            {
                long idcompany = Common.Obj2Int64(item);
                try
                {
                    var job = new Job {
                        Data = BitConverter.GetBytes(idcompany), Type = (int)TypeJobWithRabbitMQ.Company
                    };
                    jobClientDownloadImage.PublishJob(job);
                    rbMessage.AppendText(string.Format("{0} success", idcompany) + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    rbMessage.AppendText(string.Format("{0} fail {1}", idcompany, ex) + System.Environment.NewLine);
                }
            }
            rabbitMqServer.Stop();
        }
Ejemplo n.º 19
0
        public static void Main()
        {
            ILog log            = log4net.LogManager.GetLogger(typeof(Program));
            var  rabbitMQServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
            var  worker         = new Worker("ChangePriceQueue.LogToSql", false, rabbitMQServer);
            Task workerTask     = new Task(() =>
            {
                string connectToSQL = @"Data Source=172.22.30.86,1455;Initial Catalog=QT_2;Persist Security Info=True;User ID=qt_vn;Password=@F4sJ=l9/ryJt9MT;connection timeout=200";
                CrawlerProductAdapter crawlerProductAdapter = new CrawlerProductAdapter(new SqlDb(connectToSQL));

                log.Info("Start consumer!");
                worker.JobHandler = (downloadImageJob) =>
                {
                    log.Info("Get job from MQ");
                    try
                    {
                        Encoding enc             = new UTF8Encoding(true, true);
                        string strData           = enc.GetString(downloadImageJob.Data);
                        JobRabbitChangePrice job = JsonConvert.DeserializeObject <JobRabbitChangePrice>(strData);
                        crawlerProductAdapter.SaveLog(job.ProductID, job.NewPrice, job.OldPrice);
                        log.Info(string.Format("Log for {0}", strData));
                        return(true);
                    }
                    catch (Exception ex01)
                    {
                        log.Error("Exception:", ex01);
                        return(true);
                    }
                };
                worker.Start();
            });

            workerTask.Start();
            Console.ReadLine();
        }
Ejemplo n.º 20
0
        public void ConsummerDownloadHtmlTest()
        {
            var rabbitMqServer = RabbitMQManager.GetRabbitMQServer(Config.RabbitMQServerComment);
            var consumer       = new ConsumerDownloadHtml(rabbitMqServer, Config.QueueWaitDownloadHtml);

            consumer.StartConsume();
        }
Ejemplo n.º 21
0
 public ConsumerAddClassification(string queueu)
     : base(
         RabbitMQManager.GetRabbitMQServer(ConfigCrawler.KeyRabbitMqCrawler),
         queueu, false)
 {
     Inthash();
 }
Ejemplo n.º 22
0
 public void Download()
 {
     _workers             = new Worker[_workerProduct + _workerCompany + 1];
     _rabbitMqServer      = RabbitMQManager.GetRabbitMQServer(ConfigImages.RabbitMqServerName);
     _checkErrorJobClient = new JobClient(ConfigImages.ImboExchangeImages, GroupType.Topic, ConfigImages.ImboRoutingKeyCheckErrorDownload, true, _rabbitMqServer);
     for (var i = 0; i < _workerProduct; i++)
     {
         var worker = new Worker(ConfigImages.ImboQueueDownloadImageProduct, false, _rabbitMqServer);
         _workers[i] = worker;
         var workerTask = new Task(() =>
         {
             //JobClient send message to service upload sql & thumb của tráng
             var producerUpdateImageIdSql = new ProducerBasic(_rabbitMqServer, ConfigImages.ImboExchangeImages, ConfigImages.ImboRoutingKeyUploadImageIdSql);
             //var producerDelImage = new ProducerBasic(_rabbitMqServer, ConfigImages.ImboExchangeImages, ConfigImages.ImboRoutingKeyThumbImage);
             worker.JobHandler = (downloadImageJob) =>
             {
                 try
                 {
                     DownloadImageProduct(ImageProductInfo.GetDataFromMessage(downloadImageJob.Data), producerUpdateImageIdSql);
                 }
                 catch (Exception exception)
                 {
                     Log.Error("Execute Job Error.", exception);
                 }
                 return(true);
             };
             worker.Start();
         });
         workerTask.Start();
         Log.InfoFormat("Worker {0} started", i);
     }
 }
Ejemplo n.º 23
0
        public static void Main()
        {
            ILog log            = log4net.LogManager.GetLogger(typeof(Program));
            var  rabbitMQServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
            var  worker         = new Worker("ChangePriceQueue.LogToRedis", false, rabbitMQServer);
            Task workerTask     = new Task(() =>
            {
                log.Info("Start consumer!");
                worker.JobHandler = (downloadImageJob) =>
                {
                    log.Info("Get job from MQ");
                    try
                    {
                        Encoding enc             = new UTF8Encoding(true, true);
                        string strData           = enc.GetString(downloadImageJob.Data);
                        JobRabbitChangePrice job = JsonConvert.DeserializeObject <JobRabbitChangePrice>(strData);
                        RedisPriceLogAdapter.PushMerchantProductPrice(job.ProductID, job.NewPrice, DateTime.Now);
                        log.Info(string.Format("Saved for job:{0}", strData));
                        return(true);
                    }
                    catch (Exception ex01)
                    {
                        log.Error("Exception:", ex01);
                        return(true);
                    }
                };
                worker.Start();
            });

            workerTask.Start();
            Console.ReadLine();
        }
Ejemplo n.º 24
0
 public void TestInitialize()
 {
     RabbitMQManager = new RabbitMQManager();
     RabbitMQManager.Connect();
     DalAccess = new DalAccess();
     DalAccess.ConnectToDb();
 }
Ejemplo n.º 25
0
 public ConsumerReload(CancellationToken token, string nameThread)
 {
     _rabbitmqServer    = RabbitMQManager.GetRabbitMQServer(ConfigCrawler.KeyRabbitMqCrawler);
     _cancellationToken = token;
     _queueName         = ConfigCrawler.QueueCompanyReload;
     _nameThread        = nameThread;
 }
Ejemplo n.º 26
0
        public void Start()
        {
            log.Info("Start LogCrawlerMQtoSql");
            var rabbitMQServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");

            worker = new Worker("CrawlerProductReload", false, rabbitMQServer);
            log.Info("Start consumer!");
            worker.JobHandler = (downloadImageJob) =>
            {
                log.Info("Get job from MQ");
                try
                {
                    Encoding     enc     = new UTF8Encoding(true, true);
                    string       strData = enc.GetString(downloadImageJob.Data);
                    LogCrawlerMQ job     = JsonConvert.DeserializeObject <LogCrawlerMQ>(strData);
                    SaveToSql(job.Machine, job.Worker, job.Mss, job.VisitedLink, job.Product, job.QueueLink, job.DatePush, job.ProductData, job.Domain);
                    log.Info(string.Format("Log for {0}", strData));
                    this.Invoke(new Action(() =>
                    {
                        richTextBoxReport.AppendText("\n" + job.Machine + "\t" + job.Worker + "\t" + job.Mss + "\t\t" + job.VisitedLink + "\t\t" + job.VisitedLink + "\t\t" + job.QueueLink + "\t\t" + job.DatePush + "\t\t" + job.Domain);
                    }));
                    return(true);
                }
                catch (Exception ex01)
                {
                    log.Error("Exception:", ex01);
                    return(true);
                }
            };
            worker.Start();
        }
Ejemplo n.º 27
0
        public NotificationProducer(string serverNameEndPoint, string channelName, string rootingKey, bool messagePersistent)
            : base(RabbitMQManager.GetRabbitMQServer(serverNameEndPoint), channelName, rootingKey, "")
        {
            this._queueName = _routingKey;
            ChannelDAL channelDAL = new ChannelDAL();

            if (!channelDAL.CheckChannelNameExist(channelName))
            {
                throw new Exception("Channel Name does not exist");
            }

            AddConnectionShutdownHandler(this.ConnectionShutdown);
            SetMessagePersitent(messagePersistent);
            try
            {
                var channel = GetChannel();
                //channel.ExchangeDeclare(_exchangeName, ExchangeType.Direct);
                CloseChannel(channel);
            }
            catch (Exception exception)
            {
                Logger.Error("Init producer error", exception);
                AsyncWaitAndReInitialize();
            }
        }
Ejemplo n.º 28
0
 protected override void OnStart(string[] args)
 {
     log.Info("Start service");
     try
     {
         InitializeComponent();
         cancelTokenSource = new CancellationTokenSource();
         string rabbitMQServerName = ConfigurationManager.AppSettings["rabbitMQServerName"];
         workers        = new Worker[workerCount];
         rabbitMQServer = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);
         Encoding enc = new UTF8Encoding(true, true);
         for (int i = 0; i < workerCount; i++)
         {
             log.InfoFormat("Start worker {i}", i.ToString());
             var worker = new Worker(ChangePriceToRedisJobName, false, rabbitMQServer);
             workers[i] = worker;
             var  token      = this.cancelTokenSource.Token;
             Task workerTask = new Task(() =>
             {
                 worker.JobHandler = (downloadImageJob) =>
                 {
                     try
                     {
                         token.ThrowIfCancellationRequested();
                         JobRabbitChangePrice job  = JsonConvert.DeserializeObject <JobRabbitChangePrice>(enc.GetString(downloadImageJob.Data));
                         WebRequest client         = WebRequest.Create(string.Format(@"http://172.22.1.108:8983/api/PriceDetector/price_detect.htm?pn={0}", Uri.EscapeDataString(job.Name)));
                         string strData            = (new StreamReader(client.GetResponse().GetResponseStream()).ReadToEnd());
                         MsCheckPrice msCheckPrice = WSS.Service.CheckPriceProduct.MsCheckPrice.FromJSON(strData);
                         bool failPrice            = false;
                         if (job.NewPrice > 0)
                         {
                             if (msCheckPrice.price > 100000)
                             {
                                 if (job.NewPrice > msCheckPrice.price * (decimal)2 || job.NewPrice < msCheckPrice.price / (decimal)2)
                                 {
                                     failPrice = true;
                                 }
                                 log.Info(string.Format("CompanyID: {0} ProductID: {1} OldPrice: {2} OldPrice: {3} FailProduct: {4} SuggestPrice: {5}", job.CompanyID, job.ProductID, job.OldPrice, job.NewPrice, failPrice, msCheckPrice.price));
                             }
                         }
                         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;
     }
 }
Ejemplo n.º 29
0
        private void PushCheckDuplicate()
        {
            MQPushResetDuplicate mqPushResetDuplicate = new MQPushResetDuplicate(RabbitMQManager.GetRabbitMQServer(ConfigRun.KeyRabbitMqCrawler));
            string    Domain     = "";
            long      CompanyID  = 0;
            int       Count      = 0;
            DataTable tblCompany = sqldb.GetTblData("select * from company where status = 1 and datafeedtype = 0");

            foreach (DataRow CompanyInfo in tblCompany.Rows)
            {
                CompanyID = QT.Entities.Common.Obj2Int64(CompanyInfo["ID"]);
                Domain    = QT.Entities.Common.Obj2String(CompanyInfo["Domain"]);
                mqPushResetDuplicate.PushQueueReloadCacheDuplicate(CompanyID, Domain);
                Count++;
                this.Invoke(new Action(() =>
                {
                    if (Count % 200 == 0)
                    {
                        try
                        {
                            report.AppendText(string.Format("CacheDuplicate {0}/ {1} : {2} \n", Count, tblCompany.Rows.Count, CompanyID));
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                }));
            }
        }
Ejemplo n.º 30
0
 public ConsumerVisitedLinkFindNewToCassandra()
     : base(
         RabbitMQManager.GetRabbitMQServer(ConfigRun.KeyRabbitMqCrawler),
         ConfigCrawler.QueueVisitedLinkFindNewToCassandra, false)
 {
     InitData();
 }