示例#1
0
 public ConsumerReload(CancellationToken token, string nameThread)
 {
     _rabbitmqServer    = RabbitMQManager.GetRabbitMQServer(ConfigCrawler.KeyRabbitMqCrawler);
     _cancellationToken = token;
     _queueName         = ConfigCrawler.QueueCompanyReload;
     _nameThread        = nameThread;
 }
示例#2
0
        protected override void OnStart(string[] args)
        {
            rabbitMQServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
            worker         = new Worker("ChangePriceQueue.LogToSql", false, rabbitMQServer);
            Task workerTask = new Task(() =>
            {
                log.Info("Start consumer!");
                worker.JobHandler = (downloadImageJob) =>
                {
                    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("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();
        }
示例#3
0
 public MessageChannel(Container container, RabbitMQServer server, ICommandDiscovery commandDiscovery, IEventDiscovery eventDiscovery)
 {
     _container        = container;
     _server           = server;
     _commandDiscovery = commandDiscovery;
     _eventDiscovery   = eventDiscovery;
 }
示例#4
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;
            }
        }
示例#5
0
 public void InitQueue(RabbitMQServer rabbitmqServer, string queueName)
 {
     if (string.IsNullOrEmpty(queueName))
     {
         return;
     }
     while (true)
     {
         try
         {
             var imodel = rabbitmqServer.CreateChannel();
             if (imodel != null)
             {
                 imodel.QueueDeclare(queueName, true, false, false, null);
                 break;
             }
             else
             {
                 Thread.Sleep(1000);
             }
         }
         catch (Exception ex)
         {
             _log.Error(ex);
             Thread.Sleep(1000);
         }
     }
 }
示例#6
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;
     }
 }
示例#7
0
 public WorkerChangePriceToSqlHistoryPrice(string jobName, bool autoAck, RabbitMQServer rabbitMqServer,
                                           CancellationToken token)
     : base(jobName, autoAck, rabbitMqServer)
 {
     _token = token;
     Init();
 }
示例#8
0
 public ConsumerReload(RabbitMQServer rabbitmqServer, string queueName, CancellationToken token, string nameThread = "")
 {
     _rabbitmqServer    = rabbitmqServer;
     _cancellationToken = token;
     _queueName         = queueName;
     _nameThread        = nameThread;
 }
示例#9
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;
     }
 }
示例#10
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);
        }
示例#11
0
        protected override void OnStart(string[] args)
        {
            rabbitMQServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
            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();
        }
示例#12
0
 public NotificationConsumer(RabbitMQServer rabbitMQServer, string queueName, bool autoAck, string Pasword)
     : base(rabbitMQServer, queueName, autoAck)
 {
     this._rabbitMQServer = rabbitMQServer;
     this._queueName      = queueName;
     this._autoAck        = autoAck;
 }
示例#13
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();
            }
        }
示例#14
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);
     }
 }
示例#15
0
 private void Init()
 {
     rabbitMQServerName      = ConfigurationSettings.AppSettings["rabbitMQServerName"];
     rankKeywordGroupName    = ConfigurationSettings.AppSettings["rankKeywordGroupName"];
     checkRankKeywordJobName = ConfigurationSettings.AppSettings["checkRankKeywordJobName"];
     rabbitMQServer          = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);
     jobClient = new JobClient(rankKeywordGroupName, GroupType.Topic, checkRankKeywordJobName, true, rabbitMQServer);
 }
示例#16
0
        public MQ_ReCacheCompany()
        {
            this.rabbitMQServer = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
            string updateProductGroupName_ChangeMainInfo = System.Configuration.ConfigurationManager.AppSettings["updateProductGroupName"].ToString();
            string updateProductJobName_ChangeMainInfo   = System.Configuration.ConfigurationManager.AppSettings["updateProductToWebJobName"].ToString();

            this.updateProductJobClient_PushCompany = new JobClient(updateProductGroupName_ChangeMainInfo, GroupType.Topic, updateProductJobName_ChangeMainInfo, true, rabbitMQServer);
        }
示例#17
0
 public ServiceCacheProductInfo()
 {
     InitializeComponent();
     rabbitMQServer   = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
     workerCount      = QT.Entities.Common.Obj2Int(ConfigurationManager.AppSettings["workerCount"], 1);
     connectionString = ConfigurationManager.AppSettings["ConnectionString"];
     refreshCacheProductInfoJobName = ConfigurationManager.AppSettings["productInfoRefreshJobName"];
 }
示例#18
0
        public ConsumerDownloadHtml(RabbitMQServer rabbitmqServer, string domain) : base(rabbitmqServer, Config.QueueWaitDownloadHtml + "." + domain, false)
        {
            _noSqlHtml = NoSqlCommentSystem.Instance();
            _queueAS   = Config.QueueWaitAsComment + "." + domain;


            _producerAfterDownload = new ProducerBasic(rabbitmqServer, Config.QueueWaitAsComment + "." + domain);
        }
示例#19
0
 public FrmUpLoadListLogo()
 {
     InitializeComponent();
     companyTableAdapter.Connection.ConnectionString = ConnectionCommon.ConnectionWebsosanh;
     company_AutoGenerateLogoTableAdapter.Connection.ConnectionString = ConnectionCommon.ConnectionWebsosanh;
     _rabbitMqServer         = RabbitMQManager.GetRabbitMQServer(ConfigImages.RabbitMqServerName);
     _jobClientDownloadImage = new JobClient("Merchant", GroupType.Topic, "Update", true, _rabbitMqServer);
 }
示例#20
0
 public NotificationPublisher(RabbitMQServer rabbitMQServer, string exchangeName, string routingKey, string queueName)
     : base(rabbitMQServer, exchangeName, routingKey, queueName)
 {
     this.rabbitMQServer = rabbitMQServer;
     this._exchangeName  = exchangeName;
     this._routingKey    = routingKey;
     this._queueName     = queueName;
 }
示例#21
0
 public CacheCompanyService()
 {
     InitializeComponent();
     rabbitMQServer   = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
     workerCount      = QT.Entities.Common.Obj2Int(ConfigurationManager.AppSettings["workerCount"], 1);
     connectionString = ConfigurationManager.AppSettings["ConnectionString"];
     jobName          = ConfigurationManager.AppSettings["checkDuplicateRefreshJobName"];
 }
示例#22
0
 public ServiceLogCommentNotify()
 {
     InitializeComponent();
     _connectionString = ConfigurationManager.AppSettings["UserConnectionString"];
     _rabbitMqServer   = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
     _workerCount      = int.Parse(ConfigurationManager.AppSettings["WorkerCount"]);
     //OnStart(new string[] { });
 }
示例#23
0
 public ServiceCrawlerProductUpdateLastJob()
 {
     InitializeComponent();
     rabbitMQServer        = RabbitMQManager.GetRabbitMQServer("rabbitMQ177");
     workerCount           = QT.Entities.Common.Obj2Int(ConfigurationManager.AppSettings["workerCount"], 1);
     connectionString      = ConfigurationManager.AppSettings["ConnectionString"];
     CrawlerProductLastJob = ConfigurationManager.AppSettings["CrawlerProductLastJobNane"];
 }
示例#24
0
 private void FrmPromotionSingleProduct_Load(object sender, EventArgs e)
 {
     // TODO: This line of code loads data into the 'dBProduct.Product' table. You can move, or remove it, as needed.
     this.productTableAdapter.Connection.ConnectionString = ConnectionCommon.ConnectionProduct;
     //RabbitMq
     _rabbitMqServer         = RabbitMQManager.GetRabbitMQServer(ConfigRabbitMqCacheSolrAndRedis.RabbitMqServerName);
     _updateProductJobClient = new JobClient(ConfigRabbitMqCacheSolrAndRedis.ExchangeProduct, GroupType.Topic, ConfigRabbitMqCacheSolrAndRedis.RoutingKeyUpdateSolrAndRedis, true, _rabbitMqServer);
 }
示例#25
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);

                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";
                string connectToConnection = @"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";
                CrawlerProductAdapter crawlerProductAdapter = new CrawlerProductAdapter(new SqlDb(connectToSQL));
                ProductAdapter        productAdapter        = new ProductAdapter(new SqlDb(connectToConnection));

                Encoding enc = new UTF8Encoding(true, true);
                for (int i = 0; i < workerCount; i++)
                {
                    log.InfoFormat("Start worker {i}", i.ToString());
                    var worker = new Worker(AddProductToSqlJobName, false, rabbitMQServer);
                    workers[i] = worker;
                    var  token      = this.cancelTokenSource.Token;
                    Task workerTask = new Task(() =>
                    {
                        worker.JobHandler = (downloadImageJob) =>
                        {
                            try
                            {
                                token.ThrowIfCancellationRequested();
                                string strData          = enc.GetString(downloadImageJob.Data);
                                JobRabbitAddProduct job = JsonConvert.DeserializeObject <JobRabbitAddProduct>(strData);
                                if (job.DateAdd == DateTime.MinValue)
                                {
                                    job.DateAdd = productAdapter.GetLastChangeOfProduct(job.ProductID);
                                }
                                crawlerProductAdapter.SaveLogAddProduct(job.ProductID, job.DetailUrl, job.IDCompnay, job.Name, job.DateAdd);
                                log.Info(string.Format("Log for {0}", strData));
                                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;
            }
        }
示例#26
0
        public void Process()
        {
            string rabbitMQServerName = "rabbitMQ109";

            rabbitMQServer = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);
            Worker worker = new Worker(rabbitMQServer, "product_an_item_result", false);

            worker.StartConsume();
        }
示例#27
0
        public ProducerBasic(RabbitMQServer rabbitmqServer, string queueName)
            : base(rabbitmqServer)
        {
            this._queueName   = queueName;
            this.ExchangeName = "";
            this.RoutingKey   = queueName;

            InitQueue(rabbitmqServer, queueName);
        }
示例#28
0
        static void Main(string[] args)
        {
            //try
            //{
            //    ConnectionFactory factory = new ConnectionFactory();
            //    factory.HostName = "localhost";
            //    factory.Port = 5672;
            //    factory.UserName = "******";
            //    factory.Password = "******";
            //    using (IConnection conn = factory.CreateConnection())
            //    {
            //        using (IModel channel = conn.CreateModel())
            //        {
            //            //在MQ上定义一个持久化队列,如果名称相同不会重复创建
            //            channel.QueueDeclare("MyFirstQueue", true, false, false, null);

            //            //输入1,那如果接收一个消息,但是没有应答,则客户端不会收到下一个消息
            //            channel.BasicQos(0, 1, false);

            //            Console.WriteLine("Listening...");

            //            //在队列上定义一个消费者
            //            QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel);
            //            //消费队列,并设置应答模式为程序主动应答
            //            channel.BasicConsume("MyFirstQueue", false, consumer);

            //            while (true)
            //            {
            //                //阻塞函数,获取队列中的消息
            //                BasicDeliverEventArgs ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
            //                byte[] bytes = ea.Body;
            //                string str = Encoding.UTF8.GetString(bytes);
            //                RequestMsg msg = JsonConvert.DeserializeObject<RequestMsg>(str);
            //                Console.WriteLine("HandleMsg:" + msg.ToString());
            //                //回复确认
            //                channel.BasicAck(ea.DeliveryTag, false);
            //            }
            //        }
            //    }
            //}
            //catch (Exception e1)
            //{
            //    Console.WriteLine(e1.ToString());
            //}
            try
            {
                RabbitMQServer server = new RabbitMQServer();
                server.ConsumerReceivedHandler += consumer_Received;
                server.Listen();
            }
            catch (Exception e1)
            {
                Console.WriteLine(e1.ToString());
            }
            Console.ReadLine();
        }
示例#29
0
 protected override void OnStart(string[] args)
 {
     log.Info("Start service");
     try
     {
         int numberQUeue = this.jobQueues.Count();
         InitializeComponent();
         cancelTokenSource                   = new CancellationTokenSource();
         Server.LogConnectionString          = ConfigurationManager.AppSettings["LogConnectionString"];
         QT.Entities.Server.ConnectionString = connectionString;
         string rabbitMQServerName = ConfigurationManager.AppSettings["rabbitMQServerName"];
         workers        = new Worker[numberQUeue];
         rabbitMQServer = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);
         for (int i = 0; i < numberQUeue; i++)
         {
             int indexQueue = i;
             log.InfoFormat("Start worker {i}", i.ToString());
             var worker = new Worker(this.jobQueues[indexQueue], false, rabbitMQServer);
             workers[i] = worker;
             var  token      = this.cancelTokenSource.Token;
             Task workerTask = new Task(() =>
             {
                 string queueName = this.jobQueues[indexQueue];
                 QT.Moduls.Notifycation.NotifycationAdapter adapter = new QT.Moduls.Notifycation.NotifycationAdapter();
                 worker.JobHandler = (updateDatafeedJob) =>
                 {
                     try
                     {
                         string strMessage = System.Text.Encoding.UTF8.GetString(updateDatafeedJob.Data, 0, updateDatafeedJob.Data.Length);
                         adapter.InsertMessage(queueName, strMessage, 0);
                         log.Info(string.Format("MSS:{0}. Queue:{1}", strMessage, queueName));
                         return(true);
                     }
                     catch (OperationCanceledException opc)
                     {
                         log.Info("End worker");
                         return(true);
                     }
                     catch (Exception ex01)
                     {
                         log.Error(ex01);
                         return(true);
                     }
                 };
                 worker.Start();
             }, token);
             workerTask.Start();
             log.InfoFormat("Worker {0} started", i);
         }
     }
     catch (Exception ex)
     {
         log.Error("Start error", ex);
         throw;
     }
 }
示例#30
0
        static void Main(string[] args)
        {
            Consumer       consumer           = null;
            RabbitMQServer rabbitMQServer     = null;
            string         jobNameKeyword     = "product_an_item_result";
            string         rabbitMQServerName = "rabbitMQ109";

            rabbitMQServer = RabbitMQManager.GetRabbitMQServer(rabbitMQServerName);
            consumer       = new GetMessageFromRabbit(rabbitMQServer, jobNameKeyword, false);
            consumer.StartConsume();
        }