MessageQueue - C#

           //From Windows Service, 

           //To send Message to MQ

            MessageQueue messageQueue2 = null;
            MessageQueueTransaction queueTransaction = new MessageQueueTransaction();
            Message msgCurrencyHeader = new Message("my first message!!");
            msgCurrencyHeader.Label = "EODBatchCurrencyHeader";
            if (MessageQueue.Exists(@".\Private$\eodoutputlistener2"))
            {
                Console.WriteLine("MessageQueue.Exists!!");
                messageQueue2 = new MessageQueue(@".\Private$\eodoutputlistener2");
                messageQueue2.Label = "Testing Queue";
            }
            else
            {
                // Create the Queue
                Console.WriteLine("MessageQueue.not Exists!!");
                MessageQueue.Create(@".\Private$\eodoutputlistener1");
                messageQueue2 = new MessageQueue(@".\Private$\eodoutputlistener1");
                messageQueue2.Label = "Newly Created Queue";
            }
            //messageQueue2.Send("First ever Message is sent to MSMQ", queueTransaction);
            messageQueue2.Send(msgCurrencyHeader, queueTransaction);


            Console.WriteLine("MessageQueue.sent!!");


//Reading from MQ - Method 1 

            //Sample 03: Grab the Message Queue Q1
            string QueueName = @".\Private$\eodoutputlistener2";
            bool NoMessage = true;
            MessageQueue Q1 = new MessageQueue(QueueName);
            //Sample 04: Grab the Message Collection from the Queue
            System.Messaging.Message[] AllMessages = Q1.GetAllMessages();




            //Sample 05: Iterate through each message
            
            foreach (System.Messaging.Message theMessage in AllMessages)
            {


                //Sample 5.1: Read the Message body as a Byte array
                NoMessage = false;
                byte[] data = new byte[1024];
                theMessage.BodyStream.Read(data, 0, 1024);
                //Sample 5.2: Convert the byte array to string and display it
                string strMessage = ASCIIEncoding.ASCII.GetString(data);
                Console.WriteLine(strMessage);
                Console.WriteLine(Environment.NewLine);
                Console.WriteLine("==================================================");
                Console.WriteLine(Environment.NewLine);

            } 

//Reading from MQ - Method 2 

            Message mes = null;
            String m = null;
            int i = 3;
            while (i >= 0)
            {


                try
                {
                    mes = Q1.Receive(new TimeSpan(0, 0, 3));
                    mes.Formatter = new XmlMessageFormatter(
                      new String[] { "System.String,mscorlib" });
                    m = mes.Body.ToString();
                }
                catch
                {
                    m = "No Message";
                }
                Console.WriteLine("--- message : " + i + "  " + m.ToString());
                i--;
            }

你可能感兴趣的:(C#)