コード例 #1
0
        private void GenericSubscriptionQueue_MessageReceived
            (RabbitMQ.Client.IBasicConsumer sender, RabbitMQ.Client.Events.BasicDeliverEventArgs args)
        {
            RabbitMQ.Client.Events.EventingBasicConsumer consumer = (RabbitMQ.Client.Events.EventingBasicConsumer)sender;

            try
            {
                // don't reprocess items that have been processed
                if (_genericSubscriptionQueue.GetLastProcessedUndelivered() != args.DeliveryTag)
                {
                    string rawOrder = Encoding.ASCII.GetString(args.Body);

                    ProcessOrder(rawOrder);
                }

                _genericSubscriptionQueue.Ack(consumer, args.DeliveryTag);
            }
            catch (QueueDataError <string> serializationEx)
            {
                _log.WriteErrorLog("Serializing problem with order update.", serializationEx);
            }
            catch (Exception ex)
            {
                _log.WriteErrorLog("Unhandled error processing order update.", ex);
            }
        }
コード例 #2
0
        public void Consume()
        {
            QueueingBasicConsumer consumer = new QueueingBasicConsumer(Model);
            String consumerTag             = Model.BasicConsume(QueueName, false, consumer);

            while (isConsuming)
            {
                try
                {
                    RabbitMQ.Client.Events.BasicDeliverEventArgs e = (RabbitMQ.Client.Events.BasicDeliverEventArgs)consumer.Queue.Dequeue();
                    IBasicProperties props = e.BasicProperties;
                    byte[]           body  = e.Body;
                    // ... process the message
                    onMessageReceived(body);
                    Model.BasicAck(e.DeliveryTag, false);
                }
                catch (OperationInterruptedException ex)
                {
                    // The consumer was removed, either through
                    // channel or connection closure, or through the
                    // action of IModel.BasicCancel().
                    //   break;
                }
            }
        }
コード例 #3
0
        public void Consume()
        {
            QueueingBasicConsumer consumer = new QueueingBasicConsumer(Model);
            String consumerTag             = Model.BasicConsume(QueueName, true, consumer);

            while (isListening)
            {
                try
                {
                    RabbitMQ.Client.Events.BasicDeliverEventArgs e = (RabbitMQ.Client.Events.BasicDeliverEventArgs)consumer.Queue.Dequeue();
                    IBasicProperties props = e.BasicProperties;
                    byte[]           body  = e.Body;

                    onMessageReceived(body);
                    //Model.BasicAck(e.DeliveryTag, false);
                }
                catch (EndOfStreamException ex) {
                    break;
                }
                catch (OperationInterruptedException ex)
                {
                    break;
                }
            }
        }
コード例 #4
0
        private void ReceiveHandler(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs args)
        {
            string rs = Encoding.UTF8.GetString(args.Body.ToArray());

            Console.WriteLine(rs);
            rcvMq.Ack(args.DeliveryTag);
        }
コード例 #5
0
ファイル: Consumer.cs プロジェクト: aramogs/B10_Monitor
        public void Dispose()
        {
            isConsuming = false;


            if (consumer != null)
            {
                consumer = null;
            }

            if (Connection.IsOpen)
            {
                Connection.Close();
            }

            if (Model != null)
            {
                Model.Abort();
            }

            if (connectionFactory != null)
            {
                connectionFactory = null;
            }

            if (Connection != null)
            {
                Connection.Abort();
            }

            if (e != null)
            {
                e = null;
            }
        }
コード例 #6
0
        private void GenericSubscriptionQueue_MessageReceived
            (RabbitMQ.Client.IBasicConsumer sender, RabbitMQ.Client.Events.BasicDeliverEventArgs args)
        {
            RabbitMQ.Client.Events.EventingBasicConsumer consumer = (RabbitMQ.Client.Events.EventingBasicConsumer)sender;

            try {
                // don't reprocess items that have been processed
                if (genericSubscriptionQueue.GetLastProcessedUndelivered() != args.DeliveryTag)
                {
                    BaseNotification notification = NotificationExtension.Deserialize(Encoding.ASCII.GetString(args.Body));

                    eventLogRepository.WriteInformationLog("Processing notification type: {NotificationType}. Data: {QueueMessage}".Inject(new { QueueMessage = notification.ToJson(), NotificationType = notification.NotificationType.ToString() }));

                    var handler = notificationHandlerFactory(notification.NotificationType); // autofac will get the right handler
                    handler.ProcessNotification(notification);

                    // Always clear the context at the end of a transaction
                    _uow.ClearContext();
                }

                genericSubscriptionQueue.Ack(consumer, args.DeliveryTag);
            } catch (QueueDataError <string> serializationEx)  {
                eventLogRepository.WriteErrorLog("Serializing problem with notification.", serializationEx);
            } catch (QueueDataError <BaseNotification> notificationEx) {
                eventLogRepository.WriteErrorLog("Error processing notification.", notificationEx);

                PublishToQueue(notificationEx.ProcessingObject, Configuration.RabbitMQNotificationErrorQueue);
            } catch (Exception ex) {
                eventLogRepository.WriteErrorLog("Unhandled error processing notification.", ex);
            }
        }
コード例 #7
0
        public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
        {
            ReportSessionRunning report = ReportSessionRunning.GetFromJson(message.Body);

            tracks.AddItem(report);
            this.GetChannel().BasicAck(message.DeliveryTag, true);
        }
コード例 #8
0
        public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
        {
            long companyId = Convert.ToInt64(UTF8Encoding.UTF8.GetString(message.Body));

            ResetForCompany(companyId);
            this.GetChannel().BasicAck(message.DeliveryTag, true);
        }
コード例 #9
0
        public void Consume()
        {
            QueueingBasicConsumer consumer = new QueueingBasicConsumer(Model);
            bool   autoAck     = false;
            String consumerTag = Model.BasicConsume(QueueName, autoAck, consumer);

            while (isConsuming)
            {
                try
                {
                    RabbitMQ.Client.Events.BasicDeliverEventArgs e = (RabbitMQ.Client.Events.BasicDeliverEventArgs)consumer.Queue.Dequeue();
                    if (e != null)
                    {
                        IBasicProperties props = e.BasicProperties;
                        byte[]           body  = e.Body;
                        // ... process the message
                        bool bProcessed = onMessageReceived(body);
                        if (bProcessed)
                        {
                            Model.BasicAck(e.DeliveryTag, false);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Error("Consum Error", ex);
                    break;
                }
            }
        }
コード例 #10
0
        public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
        {
            var jobDownloadHtml = JobDownloadHtml.FromArByte(message.Body);

            if (jobDownloadHtml != null)
            {
                var url  = jobDownloadHtml.Url;
                var html = HttpUtility.HtmlDecode(GABIZ.Base.HtmlUrl.HTMLTransmitter.getHTML(jobDownloadHtml.Url, 45, 2));
                if (!string.IsNullOrEmpty(html))
                {
                    _noSqlHtml.SaveHtm(jobDownloadHtml.Id, jobDownloadHtml.CompanyId, html, jobDownloadHtml.Url);
                    _producerAfterDownload.PublishString(new JobWaitAS()
                    {
                        Id = jobDownloadHtml.Id, CompanyId = jobDownloadHtml.CompanyId, Url = url
                    }.ToJson());
                    _log.Info(string.Format("Download html for job:{0}", jobDownloadHtml.ToJSON()));
                }
                else
                {
                    _log.Info(string.Format("Can't download html of job:{0}", jobDownloadHtml.ToJSON()));
                }
            }
            else
            {
                _log.Info("JobErrorParse");
            }
            GetChannel().BasicAck(message.DeliveryTag, true);
        }
コード例 #11
0
        private void SubscriptionQueue_MessageReceived(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs args)
        {
            RabbitMQ.Client.Events.EventingBasicConsumer consumer = (RabbitMQ.Client.Events.EventingBasicConsumer)sender;

            try {
                ConfirmationFile confirmation = DeserializeConfirmation(args.Body);

                ProcessIncomingConfirmation(confirmation);

                //Try to save the confirmation 5 times. Several threads are modifying the order history table, so there are occasional concurrency errors.
                KeithLink.Svc.Impl.Helpers.Retry.Do(() => _conversionLogic.SaveConfirmationAsOrderHistory(confirmation), TimeSpan.FromSeconds(1), 5);

                genericSubscriptionQueue.Ack(consumer, args.DeliveryTag);
            }
            catch (QueueDataError <ConfirmationFile> dataException) {
                // Move to errror queue
                PublishToQueue(dataException.ProcessingObject, ConfirmationQueueLocation.Error);
                _log.WriteErrorLog(dataException.Message);
            }
            catch (Exception ex) {
                // Send NACK
                _log.WriteErrorLog("Error processing confirmation.", ex);
                genericSubscriptionQueue.Nack(consumer, args.DeliveryTag);
            }
        }
コード例 #12
0
        public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
        {
            JobCrlProperties jobDownloadHtml = JobCrlProperties.FromJson(UTF8Encoding.UTF8.GetString(Decompress(message.Body)));

            _handlerParserProperties.ProcessJob(jobDownloadHtml.ProductId, jobDownloadHtml.Html);
            this.GetChannel().BasicAck(message.DeliveryTag, true);
            Logger.InfoFormat("Processed {0}", jobDownloadHtml.ProductId);
        }
コード例 #13
0
ファイル: Worker1.cs プロジェクト: zonaid/rabbitmq-1
        protected override void Implement(RabbitMQ.Client.IModel channel, RabbitMQ.Client.Events.BasicDeliverEventArgs ea)
        {
            var body    = ea.Body;
            var message = Encoding.UTF8.GetString(body);

            Console.WriteLine(" worker1 Received {0}", message);
            System.Threading.Thread.Sleep(10000);
            channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
        }
コード例 #14
0
        public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
        {
            //var lstProperties = _cacheMan.Get<List<KeyValuePair<string, string>>>("prs:" + 7359876249405784780, true);

            var msRootProduct = MsRootProduct.FromJson(Encoding.UTF8.GetString(message.Body));
            var isSave        = MapProperties(msRootProduct.RootID);

            this.GetChannel().BasicAck(message.DeliveryTag, true);
        }
コード例 #15
0
        private async void ConsumerReceived(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
        {
            var message     = Encoding.UTF8.GetString(e.Body.ToArray());
            var messageSend = JsonConvert.DeserializeObject <MessageDTO>(message);

            await _hub.Clients.Group(messageSend.GroupId.ToString()).SendAsync("newMessage", message);

            _consumer.SetAcknowledge(e.DeliveryTag, true);
        }
コード例 #16
0
        private async void ConsumerReceived(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
        {
            var message      = Encoding.UTF8.GetString(e.Body.ToArray());
            var statusChange = JsonConvert.DeserializeObject <StatusChangeDto>(message);

            await _statusesHub.Clients.Group(statusChange.UserId.ToString()).SendAsync("statusChange", message);

            _consumer.SetAcknowledge(e.DeliveryTag, true);
        }
コード例 #17
0
ファイル: Chatting.cs プロジェクト: SupportingIT/rabbit
        void startServer()
        {
            ConnectionFactory factory = new ConnectionFactory();

            factory.HostName = ip;
            IConnection connection = factory.CreateConnection();

            channel = connection.CreateModel();
            connection.AutoClose = true;

            string queuename = channel.QueueDeclare().QueueName;

            channel.ExchangeDeclare("MyZone", "direct");
            channel.QueueBind(queuename, "MyZone", name);
            channel.QueueBind(queuename, "MyZone", name + "." + selfname);

            QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel);
            string tag = channel.BasicConsume(queuename, true, consumer);

            while (true)
            {
                try
                {
                    RabbitMQ.Client.Events.BasicDeliverEventArgs e =
                        (RabbitMQ.Client.Events.BasicDeliverEventArgs)consumer.Queue.Dequeue();
                    byte[] body    = e.Body;
                    string message = System.Text.Encoding.UTF8.GetString(body);
                    if (message.Trim().StartsWith("+showuser"))
                    {
                        int    index = message.IndexOf(" ");
                        string to    = message.Substring(index + 1);
                        sendMessage("-" + selfname, false, to);
                    }
                    else if (message.Trim().StartsWith("update"))
                    {
                        ;
                    }
                    else if (message.EndsWith("enter the room"))
                    {
                        int    index = message.IndexOf(" ");
                        string to    = message.Substring(0, index);
                        sendMessage("update " + selfname, false, to);
                        Console.WriteLine(message);
                    }
                    else
                    {
                        Console.WriteLine(message);
                    }
                }
                catch (System.IO.EndOfStreamException ex)
                {
                    break;
                }
            }
        }
コード例 #18
0
        private async void Consumer_Received(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
        {
            var key          = e.RoutingKey;
            var message      = Encoding.UTF8.GetString(e.Body.ToArray());
            var executeBuild = JsonConvert.DeserializeObject <ExecutiveBuildDTO>(message);

            SendBuildStatus(BuildStatus.InProgress, executeBuild.BuildHistoryId, executeBuild.UserId);
            await BuildProjectAsync(executeBuild).ContinueWith(t => SendBuildStatus(BuildStatus.Success, executeBuild.BuildHistoryId, executeBuild.UserId));

            _consumer.SetAcknowledge(e.DeliveryTag, true);
        }
コード例 #19
0
 private static void BroadcastUserInfoConsumer_Received(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
 {
     if (wsPool != null)
     {
         var result = Encoding.UTF8.GetString(e.Body);
         foreach (var item in wsPool.WebSocketList.Where(x => x.QueryString["key"] == "userSocket"))
         {
             item.OryxWebSocket.SendAsync(result).Wait();
         }
     }
 }
コード例 #20
0
        /// <summary>
        /// 注册消息接收处理器
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void Consumer_Received(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
        {
            //var wsToken = Guid.Parse(e.RoutingKey);
            var wsLsit  = wsPool.GetByQuery(SocialMsgManager.SocialMsgWSClientKey, e.RoutingKey);
            var arrByte = new ArraySegment <byte>(e.Body);

            wsLsit.ForEach(wsItem =>
            {
                wsItem.OryxWebSocket.SendAsync(arrByte, System.Net.WebSockets.WebSocketMessageType.Text, true, CancellationToken.None).ConfigureAwait(false);
            });
        }
コード例 #21
0
        private static void BroadcastWxqPicPicConsumer_Received(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
        {
            var result = Encoding.UTF8.GetString(e.Body);
            var wsList = wsPool.WebSocketList.Where(x => x.QueryString.Any(c => c.Value == "wxqpic"));

            if (wsList != null && wsList.Count() > 0)
            {
                foreach (var wsItem in wsList)
                {
                    wsItem.OryxWebSocket.SendAsync(result).Wait();
                }
            }
        }
コード例 #22
0
        private async void ConsumerReceived(object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
        {
            var message      = Encoding.UTF8.GetString(e.Body.ToArray());
            var statusChange = JsonConvert.DeserializeObject <StatusChangeDto>(message);

            using (var scope = _serviceProvider.CreateScope())
            {
                using var buildService = scope.ServiceProvider.GetService <IBuildService>();
                await buildService.ChangeStatus(statusChange);
            }

            _consumer.SetAcknowledge(e.DeliveryTag, true);
        }
コード例 #23
0
        public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
        {
            MsProduct ms = JsonConvert.DeserializeObject <MsProduct>(message.Body.ToString());

            Keyword   = ms.ProductName;
            KeywordID = QT.Entities.Common.GetID_Keywords(Keyword);
            sqldb.RunQuery("if not exists (select ID from KeywordFindNewWebsite where ID = @ID) begin insert into KeywordFindNewWebsite (ID,Keyword) Values (@ID,@Keyword) end", CommandType.Text, new SqlParameter[] {
                SqlDb.CreateParamteterSQL("@ID", KeywordID, SqlDbType.Int),
                SqlDb.CreateParamteterSQL("@Keyword", Keyword, SqlDbType.NVarChar)
            });
            Console.WriteLine(string.Format("Inserted: {0}", count));
            count++;
            this.GetChannel().BasicAck(message.DeliveryTag, true);
        }
コード例 #24
0
        private async System.Threading.Tasks.Task Consumer_Received
            (object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs e)
        {
            string queueName = e.RoutingKey;

            string eventTypeName = queueName;

            byte[] body = e.Body.ToArray();

            string message =
                System.Text.Encoding.UTF8.GetString(body);

            System.Console.WriteLine($"Received message: { message }");

            await ProcessEvent(eventTypeName, message).ConfigureAwait(false);
        }
コード例 #25
0
        public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
        {
            var ProductAds = Newtonsoft.Json.JsonConvert.DeserializeObject <ProductAdsScore>(Encoding.UTF8.GetString(message.Body));

            using (IDbConnection db = new SqlConnection(_connectionString))
            {
                db.Execute("Insert into Product_AdsScore_Deleted (ProductId, CompanyId, Keyword) values (@ProductId, @CompanyId, @Keyword)",
                           new
                {
                    ProductId = ProductAds.ProductId,
                    CompanyId = ProductAds.CompanyId,
                    Keyword   = ProductAds.Keyword
                });
            }
            this.GetChannel().BasicAck(message.DeliveryTag, true);
        }
コード例 #26
0
        public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
        {
            string json = UTF8Encoding.UTF8.GetString(message.Body);
            var    obj  = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Comment> >(json); foreach (var commentData in obj)

            {
                string author   = commentData.Author ?? "";
                string title    = commentData.Title ?? "";
                string conntent = commentData.Content ?? "";

                long hash = Common.CrcProductID(Newtonsoft.Json.JsonConvert.SerializeObject(commentData));
                bool bok  = _sqlDb.RunQuery(@"
DELETE FROM Product_Comment Where Id = @ID;
INSERT INTO [dbo].[Product_Comment]
           ([Id]
           ,[Title]
           ,[Content]
           ,[ProductId]
           ,[CompanyId]
           , [Author]
           , DateComment
)
values (@Id, @Title, @Content, @ProductId, @CompanyId, @Author, @DateComment
)
", CommandType.Text,
                                            new SqlParameter[]
                {
                    SqlDb.CreateParamteterSQL("@Id", hash, SqlDbType.BigInt), SqlDb.CreateParamteterSQL("@Title", title, SqlDbType.NVarChar),
                    SqlDb.CreateParamteterSQL("@Content", conntent, SqlDbType.NVarChar), SqlDb.CreateParamteterSQL("@ProductId", commentData.ProductId, SqlDbType.BigInt),
                    SqlDb.CreateParamteterSQL("@CompanyId", commentData.CompanyId, SqlDbType.BigInt), SqlDb.CreateParamteterSQL("@Author", author, SqlDbType.NVarChar),
                    SqlDb.CreateParamteterSQL("@DateComment", commentData.DatePublish, SqlDbType.DateTime),
                });

                if (!bok)
                {
                    Logger.Error("Can't insert:" + json);
                }
                else
                {
                    Logger.Info(string.Format("Saved mss {0}", countMss++));
                }
            }


            GetChannel().BasicAck(message.DeliveryTag, true);
        }
コード例 #27
0
 public override void ProcessMessage(RabbitMQ.Client.Events.BasicDeliverEventArgs message)
 {
     if (typeof(T) == typeof(string))
     {
         var t = Encoding.UTF8.GetString(message.Body);
         Logger.InfoFormat("Get mss: {0}", t);
         _eventProcessJob?.Invoke((T)Convert.ChangeType(t, typeof(T)));
         this.GetChannel().BasicAck(message.DeliveryTag, true);
     }
     else
     {
         var t = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(Encoding.UTF8.GetString(message.Body));
         Logger.InfoFormat("Get mss: {0}", t);
         _eventProcessJob?.Invoke(t);
         this.GetChannel().BasicAck(message.DeliveryTag, true);
     }
 }
コード例 #28
0
        public void Consume()
        {
            consumer = new QueueingBasicConsumer(Model);
            bool   autoAck     = false;
            String consumerTag = Model.BasicConsume(QueueName, autoAck, consumer);


            while (isConsuming)
            {
                try
                {
                    if (consumer != null)
                    {
                        e =
                            (RabbitMQ.Client.Events.BasicDeliverEventArgs)
                            consumer.Queue.Dequeue();



                        IBasicProperties props = e.BasicProperties;
                        byte[]           body  = e.Body;

                        string cade = System.Text.Encoding.UTF8.GetString(body);
                        Console.WriteLine("cade: " + cade);

                        try
                        {
                            System.Text.Encoding.UTF8.GetString(body);


                            onMessageReceived(body);

                            Model.BasicAck(e.DeliveryTag, false);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Error: en combertir el JSON");
                        }
                    }
                }
                catch (OperationInterruptedException ex)
                {
                    break;
                }
            }
        }
コード例 #29
0
        } // ModelShutdown

        private void MessageReceived(object sender, RmqCl.Events.BasicDeliverEventArgs eventArgs)
        {
            // This event handler is run when a message arrives

            try
            {
                // No callbacks when already disposed.
                // If the dispose call occurs right after checking, the callback can come
                // after dispose, but this is considered unlikely and unimportant.
                if (!m_disposed.Value)
                {
                    b_messageReceivedCallback(ConnectionRequestObj.Host, ConnectionRequestObj.Exchange,
                                              eventArgs.RoutingKey, eventArgs.Body);
                }
            }
            catch {}
        } // MessageReceived
コード例 #30
0
        public void StartConsumer()
        {
            iCount = 0;
            string hostName  = QT.Entities.Server.RabbitMQ_Host;
            int    Port      = QT.Entities.Server.RabbitMQ_Port;
            string userName  = QT.Entities.Server.RabbitMQ_User;
            string password  = QT.Entities.Server.RabbitMQ_Pass;
            string queueName = QT.Entities.Server.RabbitMQ_QueueTask;

            sqlDb = new SqlDb(QT.Entities.Server.ConnectionStringCrawler);

            ConnectionFactory connectionFactory = new ConnectionFactory();

            connectionFactory.UserName = userName;
            connectionFactory.Password = password;
            connectionFactory.Protocol = Protocols.DefaultProtocol;
            connectionFactory.HostName = hostName;
            connectionFactory.Port     = Port;
            connection          = connectionFactory.CreateConnection();
            connectionToPublish = connectionFactory.CreateConnection();

            ModelToPublish = connection.CreateModel();
            ModelToPublish.BasicQos(0, 1, false);
            ModelToPublish.QueueDeclare("CrawlerProduct_ReloadPrice", true, false, false, null);

            changeReport = connection.CreateModel();
            changeReport.BasicQos(0, 1, false);
            bool durable = true;

            changeReport.QueueDeclare("CrawlerProduct_ReloadPrice", durable, false, false, null);
            QueueingBasicConsumer consumer = new QueueingBasicConsumer(changeReport);
            bool   autoAck     = false;
            String consumerTag = changeReport.BasicConsume("CrawlerProduct_ReloadPrice", autoAck, consumer);

            while (true)
            {
                RabbitMQ.Client.Events.BasicDeliverEventArgs e = (RabbitMQ.Client.Events.BasicDeliverEventArgs)consumer.Queue.Dequeue();
                iCount++;
                IBasicProperties props = e.BasicProperties;
                byte[]           body  = e.Body;
                ProcessATaskMQ(body);
                changeReport.BasicAck(e.DeliveryTag, false);
            }
        }