Example #1
0
    static void MsmqBridgeOnReceiveCompleted(object sender, ReceiveCompletedEventArgs receiveCompletedEventArgs)
    {
        string sqlConnectionStr = @"Data Source =.\SQLEXPRESS; Initial Catalog = PersistenceForSqlTransport; Integrated Security = True";
        string sqlRelayEndpointName = "SqlRelay";

        using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
        {
            
            // Connect to the queue.
            MessageQueue mq = (MessageQueue)sender;

            // End the asynchronous receive operation.
            Message msg = mq.EndReceive(receiveCompletedEventArgs.AsyncResult);

            //Validate the message
            if (msg != null)
            {
                Console.WriteLine("Received a message in MSMQ -- Processing ...");
                #region read-message-and-push-to-sql
                byte[] messageBody = ConvertStreamToByteArray(msg.BodyStream);

                // Serialize to dictionary
                Dictionary<string, string> headers = ExtractHeaders(Encoding.UTF8.GetString(msg.Extension).TrimEnd('\0'));
                    
                // If this queue is going to be receiving messages from endpoints older than v4.0, then
                // set the header["NServiceBus.MessageId"] to be a deterministic guid based on the Id
                // as Sql transport expects a Guid for the MessageId and not an Id in the MSMQ format.

                // Have the necessary raw information from queue - Therefore write it to Sql.
                Console.WriteLine("Forwarding message to SQLRelay endpoint");
                SendMessageToSql(sqlConnectionStr, sqlRelayEndpointName, messageBody, headers);
                #endregion

            }
            // Restart the asynchronous receive operation.
            mq.BeginReceive();

            //Commit transaction
            scope.Complete();
            
        }
    }
Example #2
0
File: Mq.cs Project: aooshi/adf
        /// <summary>
        /// 完成一个接收
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void ReceiveCompleted <T>(object sender, ReceiveCompletedEventArgs e)
        {
            var     mq      = (MessageQueue)sender;
            var     state   = (ReceiveState <T>)e.AsyncResult.AsyncState;
            Message message = null;

            try
            {
                message = mq.EndReceive(e.AsyncResult);
            }
            catch (MessageQueueException exception)
            {
                //已dispose
                if (this.disposed)
                {
                    return;
                }

                this.logger.Exception(exception);

                //只要出现 队列错误,均视为队列失效,重建队列
                mq = this.ReconnectQueue <T>(mq, state.ArrayIndex, out message);
            }
            catch (Exception exception)
            {
                this.logger.Exception(exception);
                message = null;
            }
            //
            if (message != null)
            {
                lock (state)
                {
                    state.Count++;
                    Interlocked.Decrement(ref this.availableThread);
                    //run
                    new Thread(() => {
                        Interlocked.Increment(ref this.receiveRuningCount);
                        try
                        {
                            if (message != null)
                            {
                                message.Formatter = new XmlMessageFormatter(new[] { typeof(T) });
                                state.Action((T)message.Body);
                            }
                        }
                        catch (Exception exception)
                        {
                            this.logger.Exception(exception);
                        }
                        finally
                        {
                            lock (state)
                            {
                                state.Count--;
                                Interlocked.Increment(ref this.availableThread);
                                Monitor.Pulse(state);
                            }
                            Interlocked.Decrement(ref this.receiveRuningCount);
                        }
                    }).Start();
                    if (state.Count == state.MaxCount)
                    {
                        Monitor.Wait(state);
                    }
                }
            }

            //new receive
            while (this.Receiving)
            {
                try
                {
                    mq.BeginReceive(MessageQueue.InfiniteTimeout, state);
                    break;
                }
                catch (Exception exception)
                {
                    this.logger.Exception(exception);
                    Thread.Sleep(errorReceiveSleep);
                }
            }
        }
Example #3
0
        void con_OnReceiveCompleted(object sender, ReceiveCompletedEventArgs args)
        {
            string text = Encoding.Unicode.GetString(args.data);

            this.BeginInvoke(new FunctionCall(ReceieveMessage), text);
        }
Example #4
0
        private static void UserInputRecieved(object sender, ReceiveCompletedEventArgs e)
        {
            MessageQueue mQ = (MessageQueue)sender;
            Message      m  = mQ.EndReceive(e.AsyncResult);

            try
            {
                switch (Enum.Parse(typeof(TokenRequestType), m.Label))
                {
                case TokenRequestType.CreateToken:
                {
                    //UserModel originModel = MSMQHelper.GetMessageBody<UserModel>(m);
                    UserModel userModel = MSMQHelper.GetMessageBody <UserModel>(m);
                    Console.WriteLine("UserModel received!");

                    MSMQHelper.SendMessage(beaconInputMQ, "ServersData", "ServersData", beaconResponseMQ);

                    ServersData data = MSMQHelper.GetMessageBody <ServersData>(MSMQHelper.ReceiveMessage(beaconResponseMQ, new TimeSpan(0, 0, 5)));

                    JWTPayload payload = new JWTPayload()
                    {
                        UserID = userModel.UserID, ServersInfo = data
                    };

                    userModel.Token         = JWTManager.CreateJWT(JWTManager.CreateClaims <JWTPayload>(payload), 5).RawData;
                    userModel.TokenResponse = TokenResponse.Created;

                    Message userResponse = new Message()
                    {
                        Formatter = new JsonMessageFormatter(),
                        Body      = JsonConvert.SerializeObject(userModel),
                        Label     = userModel.UserID
                    };

                    MSMQHelper.SendMessage(m.ResponseQueue, userResponse);
                    Console.WriteLine("Token send to {0}", m.ResponseQueue.Path);
                    break;
                }

                case TokenRequestType.VerifyToken:
                {
                    UserModel userModel = MSMQHelper.GetMessageBody <UserModel>(m);

                    if (JWTManager.VerifyToken(userModel.Token))
                    {
                        userModel.TokenResponse = TokenResponse.Valid;
                        userModel.Message       = "Token Valid, Connecting to Server!";
                        Console.WriteLine("\n=======TOKEN======");
                        Console.WriteLine(userModel.Token);
                        Console.WriteLine("=======TOKEN======\n");

                        Message userResponse = new Message()
                        {
                            Formatter = new JsonMessageFormatter(),
                            Body      = JsonConvert.SerializeObject(userModel),
                            Label     = userModel.UserID
                        };
                        MSMQHelper.SendMessage(m.ResponseQueue, userResponse);
                        Console.WriteLine("Token was valid!");
                        Console.WriteLine("Response send to {0}", m.ResponseQueue.Path);
                    }
                    else
                    {
                        userModel.TokenResponse = TokenResponse.Invalid;
                        userModel.Message       = "Session Token no longer valid!\n Please login, using credentials.";

                        Message userResponse = new Message()
                        {
                            Formatter = new JsonMessageFormatter(),
                            Body      = JsonConvert.SerializeObject(userModel),
                            Label     = userModel.UserID
                        };

                        MSMQHelper.SendMessage(m.ResponseQueue, userResponse);
                        Console.WriteLine("Token was invalid!");
                        Console.WriteLine("Response send to {0}", m.ResponseQueue.Path);
                    }
                    break;
                }
                }
            }
            catch (Exception error)
            {
                Console.WriteLine("Couldn't read message!");
                Console.WriteLine(error);
                Console.WriteLine(error.Message);

                UserModel userModel = new UserModel()
                {
                    UserID        = JsonConvert.DeserializeObject <UserModel>(m.Body.ToString()).UserID,
                    RequestType   = RequestTypes.Error,
                    TokenResponse = TokenResponse.Invalid,
                    Message       = "Token Request Failed: " + error.Message
                };

                Message userResponse = new Message()
                {
                    Formatter = new JsonMessageFormatter(),
                    Body      = JsonConvert.SerializeObject(userModel),
                    Label     = userModel.UserID
                };

                MSMQHelper.SendMessage(m.ResponseQueue, userResponse);
            }

            mQ.BeginReceive();
        }
 private void Recibiendo(object sender, ReceiveCompletedEventArgs args)
 {
     try
     {
         System.Messaging.Message unMensaje = JuegosEnCola.EndReceive(args.AsyncResult);
         unJuego = (Juegos)unMensaje.Body;
         listaJuegos.Add(unJuego);
         JuegosEnCola.BeginReceive(new TimeSpan(1, 0, 0, 0));
     }
     catch (Exception ex)
     {
         Response.Write("<div id=\"error\" class=\"alert alert-danger\">" + ex.Message + "</div>"
         + "<script type=\"text/javascript\">window.onload=function(){alertBootstrap();};</script>");
     }
 }
Example #6
0
        private void ReadMQ_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
        {
            Log.Information("Read Message Queue Event Triggered");
            //Read recieved message
            var msgRead = new Message();

            msgRead = readMQ.EndReceive(e.AsyncResult);
            Log.Information(msgRead.Label + " Recieved MsgID: " + msgRead.Id);

            if (msgRead.Label == "Plc_Config_Request")
            {
                msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(PlcConfigReqMsg) });
                var msgData = ((PlcConfigReqMsg)msgRead.Body);

                if (msgData.getPlcConfig == true)
                {
                    using (var _context = new FactoryDataDbContext())
                    {
                        try
                        {
                            var plcConfig = _context.Plcs.SingleOrDefault(p => p.Id == 1);

                            if (plcConfig == null)
                            {
                                Log.Error("Plc config query executed with null result");
                            }
                            else
                            {
                                Log.Debug("Plc config query executed successfully");
                            }

                            var config = new PlcConfigMsg()
                            {
                                Name                 = plcConfig.Name,
                                IPAddress            = plcConfig.IPAddress,
                                DisableSubscriptions = plcConfig.DisableSubscriptions,
                                PollRateOverride     = plcConfig.PollRateOverride,
                                ProcessorSlot        = plcConfig.ProcessorSlot,
                                Port                 = plcConfig.Port,
                                EventPollRate        = plcConfig.EventPollRate,
                                SubscriptionPollRate = plcConfig.SubscriptionPollRate,
                                TransactionPollRate  = plcConfig.TransactionPollRate
                            };

                            var type = new Type[] { typeof(PlcConfigMsg) };

                            using (var msg = new SendMessage())
                            {
                                msg.Send(config, "Plc_Config", type);
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.Error("Plc config query exception" + ex.Message);
                        }
                        finally
                        {
                            _context.Dispose();
                        }
                    }

                    Log.Information("Plc Config Request Message Processed" + " MsgID: " + msgRead.Id);
                }
            }

            if (msgRead.Label == "TagList_Request")
            {
                msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(TagListReqMsg) });
                var msgData = ((TagListReqMsg)msgRead.Body);

                if (msgData.getTagList == true)
                {
                    using (var _context = new FactoryDataDbContext())
                    {
                        try
                        {
                            var tagList = _context.Tags.ToList().Where(t => t.IsActive == true);

                            if (tagList == null)
                            {
                                Log.Error("Tag list query executed with null result");
                            }
                            else
                            {
                                Log.Debug("Tag list query executed successfully");
                            }

                            msgTagList = new TagListMsg()
                            {
                                List = new List <ListTag>()
                            };

                            foreach (Tag elem in tagList)
                            {
                                var tag = new ListTag
                                {
                                    Id        = elem.Id,
                                    Name      = elem.Name,
                                    TagTypeId = elem.TagTypeId,
                                    PlcId     = elem.PlcId,
                                    IsActive  = elem.IsActive
                                };

                                msgTagList.List.Add(tag);
                                Log.Debug("Tag added to message list: " + tag.Name);
                            }
                            ;

                            var type = new Type[] { typeof(TagListMsg) };

                            using (var msg = new SendMessage())
                            {
                                Log.Debug("Tag list message passed to send");
                                msg.Send(msgTagList, "TagList_Config", type);
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.Error("Tag List query exception: " + ex.Message);
                        }
                        finally
                        {
                            _context.Dispose();
                        }
                    }

                    Log.Information("Tag List Request Message Processed" + " MsgID: " + msgRead.Id);
                }
            }

            if (msgRead.Label == "SubscriptionTag_Results")
            {
                msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(TagReadResultsMsg) });
                var msgData = ((TagReadResultsMsg)msgRead.Body);

                using (var _context = new FactoryDataDbContext())
                {
                    try
                    {
                        foreach (RecordTag elem in msgData.List)
                        {
                            var subscriptionRecord = new SubscriptionTagRecord
                            {
                                TagId    = elem.TagId,
                                Data     = elem.Data,
                                PlcTS    = elem.PlcTS,
                                RecordTS = DateTime.Now
                            };

                            _context.SubscriptionTagRecords.Add(subscriptionRecord);
                            _context.SaveChanges();
                            Log.Debug("Subscription Tag Record Added to database");
                        }
                        ;
                    }
                    catch (Exception ex)
                    {
                        Log.Error("Subscription Tag Record add to database exception: "
                                  + ex.Message + "Inner Exception: "
                                  + ex.InnerException.ToString());
                    }
                }

                Log.Information("Subscription Tag Results Message Processed" + " MsgID: " + msgRead.Id);
            }

            if (msgRead.Label == "EventTag_Results")
            {
                msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(TagReadResultsMsg) });
                var msgData = ((TagReadResultsMsg)msgRead.Body);

                using (var _context = new FactoryDataDbContext())
                {
                    try
                    {
                        foreach (RecordTag elem in msgData.List)
                        {
                            var eventRecord = new EventTagRecord
                            {
                                TagId    = elem.TagId,
                                Data     = elem.Data,
                                PlcTS    = elem.PlcTS,
                                RecordTS = DateTime.Now
                            };

                            _context.EventTagRecords.Add(eventRecord);
                            _context.SaveChanges();
                            Log.Debug("Event Tag Record Added to database");
                        }
                        ;
                    }
                    catch (Exception ex)
                    {
                        Log.Error("Event Tag Record add to database exception: " + ex.Message + "Inner Exception: " + ex.InnerException.ToString());
                    }
                }

                Log.Information("Event Tag Results Message Processed" + " MsgID: " + msgRead.Id);
            }

            if (msgRead.Label == "TransactionTag_Results")
            {
                msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(TransactionResultsMsg) });
                var msgData = ((TransactionResultsMsg)msgRead.Body);

                foreach (TransactionRecord record in msgData.Records)
                {
                    if (record.Udt.TransactionType == TransactionTypeConstants.Insert)
                    {
                        try
                        {
                            var rowCount = DBUtils.SqlInsert(record.Udt, record.TagName);
                            Log.Information("Transaction udt Sql Insert complete");
                        }
                        catch (Exception ex)
                        {
                            Log.Error("Transaction udt Sql Insert Exception: " + ex.Message);
                        }
                    }

                    if (record.Udt.TransactionType == TransactionTypeConstants.Update)
                    {
                        try
                        {
                            var rowCount = DBUtils.SqlUpdate(record.Udt, record.TagName);
                            Log.Information("Transaction udt Sql Update complete");
                        }
                        catch (Exception ex)
                        {
                            Log.Error("Transaction udt Sql Update Exception: " + ex.Message);
                        }
                    }
                }
            }

            // Resume listening for messages
            try
            {
                readMQ.BeginReceive();
                Log.Information("ReadMQ Resume Listening For Messages");
            }
            catch (Exception ex)
            {
                Log.Error("ReadMQ Resume Listening For Messages Exception: " + ex.Message);
            }
        }
Example #7
0
        void gotMessage(object sender, ReceiveCompletedEventArgs e)
        {
            TL2         mt      = TL2.INFO;
            string      from    = "";
            LinkMessage gotmess = null;
            object      m       = null;

            gotmess = (LinkMessage)e.Message.Body;
            mt      = gotmess.Type;
            m       = gotmess.Body;
            from    = gotmess.From;

            int  cid = -1;
            Tick t   = new Tick();

            try
            {
                switch (mt)
                {
                // CLIENT MESSAGES
                case TL2.TICKNOTIFY:
                    t = (Tick)m;
                    gotTick(t);
                    break;

                case TL2.EXECUTENOTIFY:
                    Trade trade;
                    trade = (Trade)m;
                    gotFill(trade);
                    break;

                // SERVER MESSAGES
                case TL2.REGISTERCLIENT:
                    if (client.IndexOf(from) != -1)
                    {
                        break;                                 // we already had your client, ignore
                    }
                    client.Add(from);
                    stocks.Add("");
                    heart.Add(new DateTime());
                    break;

                case TL2.REGISTERSTOCK:
                    cid = client.IndexOf(from);
                    if (cid == -1)
                    {
                        break;                // client not found
                    }
                    MarketBasket mb = (MarketBasket)m;
                    stocks[cid] = mb.ToString();
                    BeatHeart(from);
                    break;

                case TL2.HEARTBEAT:
                    BeatHeart(from);
                    break;

                case TL2.CLEARSTOCKS:
                    cid = client.IndexOf(from);
                    if (cid == -1)
                    {
                        break;
                    }
                    stocks[cid] = null;
                    BeatHeart(from);
                    break;

                case TL2.CLEARCLIENT:
                    cid = client.IndexOf(from);
                    if (cid == -1)
                    {
                        break;                // we don't have the client, nothing to do
                    }
                    client[cid] = null;
                    stocks[cid] = null;
                    heart[cid]  = new DateTime();
                    break;
                }
            }
            catch (Exception ex) { string s = ex.Message; }
            if (this.GotMessage != null)
            {
                GotMessage(mt, from); // send GotMessage event to any subscribers
            }
            rec.BeginReceive();       // prepare to receive new messages
        }
        private void MyReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
        {
            // Connect to the queue.
            mq = (MessageQueue)source;
            try
            {
                Message              msg = mq.EndReceive(asyncResult.AsyncResult);
                PendingBooking       pb  = null;
                UpdatedBooking       ub  = null;
                BlockBooking         bb  = null;
                ChangedAppointment   ca  = null;
                CancelledAppointment cancelledAppointment = null;
                string label = (string)msg.Label;
                logger.Info("label created fine"); //temp changes should be removed
                if (label == "pending")
                {
                    msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(PendingBooking) });
                    logger.Info("pending formatter  created fine");//temp changes should be removed
                    pb = (PendingBooking)msg.Body;
                    logger.Info("#STPendingSAR# " + pb.MeetingKey + " " + DateTime.UtcNow.Ticks);
                    logger.Info("pendingbookin conversion  created fine");          //temp changes should be removed
                                                                                    // Display the message information on the screen.
                    logger.Info("pendingbooking meeting key" + pb.MeetingKey);      //temp changes should be removed
                    logger.Info("PendingBookingList Status " + PendingBookingList); //temp changes should be removed
                    logger.Info("#STPendingSAEN# " + pb.MeetingKey + " " + DateTime.UtcNow.Ticks);
                    EnqueuePendingBooking(pb);
                }
                else if (label == "update")
                {
                    msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(UpdatedBooking) });
                    logger.Info("update formatter  created fine");  //temp changes should be removed
                    ub = (UpdatedBooking)msg.Body;
                    logger.Info("update conversion  created fine"); //temp changes should be removed
                                                                    // Display the message information on the screen.
                    EnqueueUpdatedMSSBooking(ub);
                }
                else if (label == "Create Appointment" || label == "Update Appointment")
                {
                    msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(ChangedAppointment) });
                    logger.Info("Appointment formatter  created fine");  //temp changes should be removed
                    ca = (ChangedAppointment)msg.Body;
                    logger.Info("Appointment conversion  created fine"); //temp changes should be removed

                    EnqueueChangedAppointment(ca);
                }
                else if (label == "Delete Appointment")
                {
                    logger.Info("start reading deleted appointment");
                    msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(CancelledAppointment) });
                    logger.Info("Appointment formatter  created fine");
                    cancelledAppointment = (CancelledAppointment)msg.Body;
                    logger.Info("Appointment conversion  created fine");

                    EnqueueCancelledAppointment(cancelledAppointment);
                }
                else if (label == "blockbooking")
                {
                    msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(BlockBooking) });
                    logger.Info("Block booking formatter created successfully");
                    bb = (BlockBooking)msg.Body;
                    logger.Info("Block booking conversion was successful"); //temp log
                    EnqueueBlockBooking(bb);
                }
            }
            catch (Exception ex)
            {
                logger.Error("Error in ReceiveComplete Event : Block Booking - Exception = " + ex.StackTrace + " " + ex.Message);
            }
            mq.BeginReceive();
        }
        // Recieve message event
        private void ReadMQ_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
        {
            Log.Debug("Read Message Queue Event Triggered");
            //Read recieved message
            var msgRead = new Message();

            msgRead = readMQ.EndReceive(e.AsyncResult);
            Log.Debug(msgRead.Label + " Recieved MsgID: " + msgRead.Id);

            if (msgRead.Label == "Plc_Config")
            {
                msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(PlcConfigMsg) });
                var msgData = ((PlcConfigMsg)msgRead.Body);

                // Instantiate Logix drivers
                logixEventDrv = new EthernetIPforCLXCom()
                {
                    IPAddress            = msgData.IPAddress,
                    DisableSubscriptions = msgData.DisableSubscriptions,
                    PollRateOverride     = msgData.PollRateOverride,
                    ProcessorSlot        = msgData.ProcessorSlot,
                    Port = msgData.Port
                };
                Log.Information("Logix Event driver created");

                logixSubscriptionDrv = new EthernetIPforCLXCom()
                {
                    IPAddress            = msgData.IPAddress,
                    DisableSubscriptions = msgData.DisableSubscriptions,
                    PollRateOverride     = msgData.PollRateOverride,
                    ProcessorSlot        = msgData.ProcessorSlot,
                    Port = msgData.Port
                };
                Log.Information("Logix Subscription driver created");

                logixTransactionDrv = new EthernetIPforCLXCom()
                {
                    IPAddress            = msgData.IPAddress,
                    DisableSubscriptions = msgData.DisableSubscriptions,
                    PollRateOverride     = msgData.PollRateOverride,
                    ProcessorSlot        = msgData.ProcessorSlot,
                    Port = msgData.Port
                };
                Log.Information("Logix Transaction driver created");

                // Set up read timers
                eventTimer = new Timer
                {
                    Interval = msgData.EventPollRate
                };
                eventTimer.Elapsed += new ElapsedEventHandler(OnEventTimer);

                subscriptionTimer = new Timer
                {
                    Interval = msgData.SubscriptionPollRate
                };
                subscriptionTimer.Elapsed += new ElapsedEventHandler(OnSubscriptionTimer);

                transactionTimer = new Timer
                {
                    Interval = msgData.TransactionPollRate
                };
                transactionTimer.Elapsed += new ElapsedEventHandler(OnTransactionTimer);

                // Get tag list from database
                var msgObject = new TagListReqMsg
                {
                    getTagList = true
                };

                var type = new Type[] { typeof(TagListReqMsg) };

                using (var msg = new SendMessage())
                {
                    msg.Send(msgObject, "TagList_Request", type);
                }

                Log.Debug("Plc Config Message Processed" + " MsgID: " + msgRead.Id);
            }

            if (msgRead.Label == "TagList_Config")
            {
                msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(TagListMsg) });
                var msgData = ((TagListMsg)msgRead.Body);

                eventList        = new List <ListTag>();
                transactionList  = new List <ListTag>();
                subscriptionList = new List <ListTag>();


                foreach (ListTag elem in msgData.List)
                {
                    if (elem.TagTypeId == TagTypeConstants.eventType)
                    {
                        var tag = elem;
                        eventList.Add(tag);
                        Log.Debug("Tag added to event tag list: " + tag.Name);
                    }

                    if (elem.TagTypeId == TagTypeConstants.subscriptionType)
                    {
                        var tag = elem;
                        subscriptionList.Add(tag);
                        Log.Debug("Tag added to subscription tag list: " + tag.Name);
                    }

                    if (elem.TagTypeId == TagTypeConstants.transactionType)
                    {
                        var tag = elem;
                        transactionList.Add(tag);
                        Log.Debug("Tag added to transaction tag list: " + tag.Name);
                    }
                }
                ;

                // Start read timers
                eventTimer.Start();
                transactionTimer.Start();
                subscriptionTimer.Start();
                Log.Debug("Read timers started ");
            }

            // Resume listening for messages
            try
            {
                readMQ.BeginReceive();
                Log.Information("ReadMQ Listening For Messages");
            }
            catch (Exception ex)
            {
                Log.Error("ReadMQ Begin Recieve Exception: " + ex.Message);
            }
        }
Example #10
0
 private void OnReceivedMessage(object sender, ReceiveCompletedEventArgs e)
 {
     OnReceivedMessage(sender, e.Message);
 }
Example #11
0
        public void OnReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
        {
            MessageQueue requestQueue   = (MessageQueue)source;
            Message      requestMessage = requestQueue.EndReceive(asyncResult.AsyncResult);

            try
            {
                Console.WriteLine("Received request");
                Console.WriteLine("\tTime:       {0}", DateTime.Now.ToString("HH:mm:ss.ffffff"));
                Console.WriteLine("\tMessage ID: {0}", requestMessage.Id);
                Console.WriteLine("\tCorrel. ID: {0}", "<n/a>");
                Console.WriteLine("\tReply to:   {0}", requestMessage.ResponseQueue.Path);
                Console.WriteLine("\tContents:   {0}", requestMessage.Body.ToString());

                string contents = requestMessage.Body.ToString();
                //ROLEPLAY STUFF
                Console.WriteLine("Will you accept " + contents + " in your school?");
                var input = Console.ReadLine();

                if (input == "y")
                {
                    contents = "Dear " + contents + " you have been accepted.";
                }
                else
                {
                    contents = "Dear " + contents + " you have been rejected.";
                }

                //ROLEPLAY STUFF
                MessageQueue replyQueue   = requestMessage.ResponseQueue;
                Message      replyMessage = new Message();
                replyMessage.Body          = contents;
                replyMessage.CorrelationId = requestMessage.Id;
                replyQueue.Send(replyMessage);

                Console.WriteLine("Sent reply");
                Console.WriteLine("\tTime:       {0}", DateTime.Now.ToString("HH:mm:ss.ffffff"));
                Console.WriteLine("\tMessage ID: {0}", replyMessage.Id);
                Console.WriteLine("\tCorrel. ID: {0}", replyMessage.CorrelationId);
                Console.WriteLine("\tReply to:   {0}", "<n/a>");
                Console.WriteLine("\tContents:   {0}", replyMessage.Body.ToString());
            }
            catch (Exception)
            {
                Console.WriteLine("Invalid message detected");
                Console.WriteLine("\tType:       {0}", requestMessage.BodyType);
                Console.WriteLine("\tTime:       {0}", DateTime.Now.ToString("HH:mm:ss.ffffff"));
                Console.WriteLine("\tMessage ID: {0}", requestMessage.Id);
                Console.WriteLine("\tCorrel. ID: {0}", "<n/a>");
                Console.WriteLine("\tReply to:   {0}", "<n/a>");

                requestMessage.CorrelationId = requestMessage.Id;

                invalidQueue.Send(requestMessage);

                Console.WriteLine("Sent to invalid message queue");
                Console.WriteLine("\tType:       {0}", requestMessage.BodyType);
                Console.WriteLine("\tTime:       {0}", DateTime.Now.ToString("HH:mm:ss.ffffff"));
                Console.WriteLine("\tMessage ID: {0}", requestMessage.Id);
                Console.WriteLine("\tCorrel. ID: {0}", requestMessage.CorrelationId);
                Console.WriteLine("\tReply to:   {0}", requestMessage.ResponseQueue.Path);
            }

            requestQueue.BeginReceive();
        }
Example #12
0
        void msmq_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
        {
            try
            {
                //lstQueueData.Items.Insert(0,e.Message.Body.ToString());
                msmq.EndReceive(e.AsyncResult);
                if (chkCount.Checked)
                {
                    txtRemaining.Text = GetMessageCount(msmq).ToString();

                    string theItem = e.Message.Body.ToString();

                    string[] arrayOfStrings = theItem.Split(',');

                    string   workStation    = arrayOfStrings[0];
                    string   yoYoID         = arrayOfStrings[1];
                    string   lineNumber     = arrayOfStrings[2];
                    string   inspectionType = arrayOfStrings[3];
                    string   issue          = arrayOfStrings[4];
                    DateTime timeProcessed  = Convert.ToDateTime(arrayOfStrings[5]);

                    string        connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=yoyo;Persist Security Info=True;User ID=sa;Password=Conestoga1";
                    SqlConnection conn;

                    conn = new SqlConnection(connectionString);
                    SqlCommand sqlCmd = new SqlCommand(
                        "INSERT INTO yoyoLog "
                        + "(WorkArea, YoYoID, LineNumber, ProdState, InspectionDecision, DateTimeOfCompletion) "
                        + "VALUES("
                        + "'" + workStation + "', "
                        + "'" + yoYoID + "', "
                        + "'" + lineNumber + "', "
                        + "'" + inspectionType + "', "
                        + "'" + issue + "', "
                        + "'" + timeProcessed + "')"
                        , conn);

                    try
                    {
                        conn.Open();
                        sqlCmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show(exception.Message);
                    }

                    Application.DoEvents();
                }
                System.Threading.Thread.Sleep(1);
                if (bRead)
                {
                    msmq.BeginReceive();
                }
            }
            catch
            {
                MessageBox.Show("Unhandled Exception");
            }
        }