MessageQueue學習總結

來源:互聯網
上載者:User

具體的理論這裡就不說了。主要說一下做的例子。本例子主要是發送不同的訊息。然後根所ID得到指定的訊息內容。

方法:

  1、在專用隊列增加一個專用隊列"Demo"。所有選項為預設即可。

  2、發送訊息。輸入訊息的ID,輸入訊息的內容發送訊息。

  3、輸入被接收訊息的ID,根據此ID找到訊息後查看其內容。

訊息ID設定方法:

  訊息中沒有ID這個選項。所以不知如何把訊息發送給指定的人。後來找到了Label屬性, 我將要發送的給某某人的ID設在此屬性中來解決問題。  如果誰有更好的方法也請回貼告知我。

 

代碼:

   第二步中發送按鈕代碼為:

         /// <summary>
        /// 定義訊息路徑
        /// </summary>
        public const string sMessageConnectionString = @".\Private$\Demo";
       
        /// <summary>
        /// 發送
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSend_Click(object sender, EventArgs e)
        {
            if (txbSend.Text.Trim() == "")
            {
                MessageBox.Show("請輸入要發送的message!");
                txbSend.Focus();
                return;
            }

            //完整隊列格式為:  電腦名稱\private$\隊列名稱 (專用隊列)
            MessageQueue mqQue = new MessageQueue(txtQueue.Text.Trim());
            mqQue.MessageReadPropertyFilter.SetAll();

            System.Messaging.Message msg = new System.Messaging.Message();
            //訊息主體
            msg.Body = txbSend.Text.Trim() + " " + DateTime.Now.ToString();
            //用描述設定ID
            msg.Label = txbMessageID.Text;
            //將訊息加入到發送隊列
            msg.ResponseQueue = mqQue;
            msg.AttachSenderId = true;

            msg.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });

            try
            {   
                //發送
                mqQue.Send(msg);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }

        }

 

  第三步中接收訊息的代碼:

        /// <summary>
        /// 接收
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReceive_Click(object sender, EventArgs e)
        {
           
            MessageQueue mqQue = null;
            if (MessageQueue.Exists(sMessageConnectionString))
            {
                mqQue = new System.Messaging.MessageQueue(sMessageConnectionString);
            }
            //得到所有訊息
            System.Messaging.Message[] messages = mqQue.GetAllMessages();
            if (messages.Length > 0)
            {
                foreach (System.Messaging.Message msgVal in messages)
                {
                    //根據ID得到訊息(這個ID放在訊息的label中)
                    if (msgVal.Label==txbReceiveMsgID.Text)
                    {
                        //同步接收,直到得到一條訊息為止,如果訊息佇列為空白,會一直阻塞
                        System.Messaging.Message msg = mqQue.Receive();
                        msg.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
                        //訊息的內容
                        txbReceive.Text = "[" + DateTime.Now.ToString() + "]: " + msg.Body.ToString();
                        break;
                    }
                    else
                    {
                        txbReceiveMsgID.Text = "沒有找到指定ID的Message";
                    }
                }
            }
        }

 

  清除所有訊息代碼:

   /// <summary>
        /// 清除訊息佇列
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnClear_Click(object sender, EventArgs e)
        {
            MessageQueue mqQue = null;
            if (MessageQueue.Exists(sMessageConnectionString))
            {
                //清除所有訊息
                mqQue = new System.Messaging.MessageQueue(sMessageConnectionString);
                mqQue.Purge();

            }
        }

 

代碼下載:

http://files.cnblogs.com/scottckt/MessageStudy.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.