亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

.Net消息隊列的使用方法

2024-07-10 13:26:58
字體:
來源:轉載
供稿:網友

.Net使用消息隊列,借助windows組件來存儲要完成的一系列任務,不用程序使用同一個隊列,方便不同程序之間的數據共享和協作……

以本人經驗,這個在某個方面類似于session(當然還有很多方面不同),相同之處:session可以把信息存儲在aspnet_state服務中,網站重新編譯或者重新啟動網站,session不會丟失(session超時是正常情況,這種情況除外)。

win7中安裝消息隊列組件,其他操作系統請百度搜索相關資料。

.Net消息隊列的使用方法


 

如果服務沒有自動啟動,需要啟動服務:

先創建隊列,再使用隊列,隊列中的消息,發送一個多一個,接收一個少一個,先進先出。

復制代碼 代碼如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Messaging;
//添加物理文件 System.Messaging 的引用
namespace testweb
{
    public partial class MSMQtest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //CreateNewQueue("MsgQueue");//創建一個消息隊列
            //sendSimpleMsg();//每一個隊列最好只發送和接收同一種格式的信息,不然不好轉換格式。
            //receiveSimpleMsg();//
            //receiveSimpleMsg();
            //sendComplexMsg();
            //receiveComplexMsg();
            MsgModel m = receiveComplexMsg<MsgModel>();
            Response.Write(m.ToString());

        }
        private void sendSimpleMsg()
        {
            //實例化MessageQueue,并指向現有的一個名稱為VideoQueue隊列
            MessageQueue MQ = new MessageQueue(@"./private$/MsgQueue");
            //MQ.Send("消息測試", "測試消息");
            System.Messaging.Message message = new System.Messaging.Message();
            message.Label = "消息lable";
            message.Body = "消息body";
            MQ.Send(message);

            Response.Write("成功發送消息," + DateTime.Now + "<br/>");
        }
        private void receiveSimpleMsg()
        {
            MessageQueue MQ = new MessageQueue(@"./private$/MsgQueue");
            //調用MessageQueue的Receive方法接收消息
            if (MQ.GetAllMessages().Length > 0)
            {
                System.Messaging.Message message = MQ.Receive(TimeSpan.FromSeconds(5));
                if (message != null)
                {
                    //message.Formatter = new System.Messaging.XmlMessageFormatter(new string[] { "Message.Bussiness.VideoPath,Message" });//消息類型轉換
                    message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
                    Response.Write(string.Format("接收消息成功,lable:{0},body:{1},{2}<br/>", message.Label, message.Body.ToString(), DateTime.Now));
                }
            }
            else
            {
                Response.Write("沒有消息了!<br/>");
            }
        }
        private void sendComplexMsg()
        {
            //實例化MessageQueue,并指向現有的一個名稱為VideoQueue隊列
            MessageQueue MQ = new MessageQueue(@"./private$/MsgQueue");
            //MQ.Send("消息測試", "測試消息");
            System.Messaging.Message message = new System.Messaging.Message();
            message.Label = "復雜消息lable";
            message.Body = new MsgModel("1", "消息1");
            MQ.Send(message);

            Response.Write("成功發送消息,"+DateTime.Now+"<br/>");
        }
        private void receiveComplexMsg()
        {
            MessageQueue MQ = new MessageQueue(@"./private$/MsgQueue");
            //調用MessageQueue的Receive方法接收消息
            if (MQ.GetAllMessages().Length > 0)
            {
                System.Messaging.Message message = MQ.Receive(TimeSpan.FromSeconds(5));
                if (message != null)
                {
                    message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(MsgModel) });//消息類型轉換
                    MsgModel msg = (MsgModel)message.Body;
                    Response.Write(string.Format("接收消息成功,lable:{0},body:{1},{2}<br/>", message.Label, msg, DateTime.Now));
                }
            }
            else
            {
                Response.Write("沒有消息了!<br/>");
            }
        }
        private T receiveComplexMsg<T>()
        {
            MessageQueue MQ = new MessageQueue(@"./private$/MsgQueue");
            //調用MessageQueue的Receive方法接收消息
            if (MQ.GetAllMessages().Length > 0)
            {
                System.Messaging.Message message = MQ.Receive(TimeSpan.FromSeconds(5));
                if (message != null)
                {
                    message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(T) });//消息類型轉換
                    T msg = (T)message.Body;
                    return msg;
                }
            }

            return default(T);
        }

        /// <summary>
        /// 創建消息隊列
        /// </summary>
        /// <param>消息隊列名稱</param>
        /// <returns></returns>
        public void CreateNewQueue(string name)
        {
            if (!System.Messaging.MessageQueue.Exists(".//private$//" + name))//檢查是否已經存在同名的消息隊列
            {

                System.Messaging.MessageQueue mq = System.Messaging.MessageQueue.Create(".//private$//" + name);
                mq.Label = "private$//"+name;
                Response.Write("創建成功!<br/>");
            }
            else
            {
                //System.Messaging.MessageQueue.Delete(".//private$//" + name);//刪除一個消息隊列
                Response.Write("已經存在<br/>");
            }
        }

    }
    [Serializable]
    public class MsgModel
    {
        public string id { get; set; }
        public string Name { get; set; }
        public MsgModel() { }
        public MsgModel(string _id, string _Name)
        {
            id = _id;
            Name = _Name;
        }
        public override string ToString()
        {
            if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(Name)) return "";
            return string.Format("id--{0},Name--{1}",id,Name);
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品久久久久久| 北条麻妃99精品青青久久| 精品欧美国产一区二区三区| 俺去啦;欧美日韩| 久久久最新网址| 欧美黑人视频一区| 国产高清视频一区三区| 欧美激情精品久久久久久| 2019国产精品自在线拍国产不卡| 久久天堂电影网| 人人做人人澡人人爽欧美| 久久亚洲欧美日韩精品专区| 亚洲国产欧美自拍| 国产一区私人高清影院| 亚洲女性裸体视频| 国产精品91免费在线| 国内精久久久久久久久久人| 国外成人在线视频| 亚洲人成电影网站色xx| 国产精品久久久久久av下载红粉| 成人精品一区二区三区| 久久精品一本久久99精品| 正在播放亚洲1区| 亚洲成人av片| 日韩精品极品在线观看播放免费视频| 欧美日韩一区二区免费在线观看| 欧美精品激情视频| 欧美日韩国产va另类| 国产主播喷水一区二区| 欧美成人免费一级人片100| 91高清免费在线观看| 国产精品美女主播在线观看纯欲| 欧美成人免费在线视频| 国产91对白在线播放| 日韩久久免费电影| 高清亚洲成在人网站天堂| 97在线看免费观看视频在线观看| 亚洲四色影视在线观看| 精品日本美女福利在线观看| 久热在线中文字幕色999舞| 日韩亚洲第一页| 久久免费观看视频| 欧美亚洲国产另类| 欧美电影院免费观看| 国产精品99久久久久久久久久久久| 久久伊人精品一区二区三区| 在线观看精品国产视频| 亚洲成人精品视频在线观看| 亚洲精品电影网| 海角国产乱辈乱精品视频| 久久久久久亚洲精品中文字幕| 欧美天天综合色影久久精品| 精品国产依人香蕉在线精品| 久久国产精品免费视频| 国产欧美一区二区三区久久人妖| 一本一本久久a久久精品综合小说| 精品在线欧美视频| 欧美成人午夜视频| 欧美激情精品久久久久久黑人| 久久91亚洲精品中文字幕| 欧美日韩视频在线| 欧美午夜性色大片在线观看| 欧美性猛交xxxx| 亚洲丁香久久久| 久久久久久久影院| 久久久久久久久综合| 亚洲三级免费看| 欧美国产日产韩国视频| 97视频在线观看成人| 综合网中文字幕| 欧美www视频在线观看| 精品香蕉一区二区三区| 正在播放国产一区| 欧美激情免费观看| 5566成人精品视频免费| 亚洲成人av在线| 97av在线播放| 日韩精品视频免费| 亚洲精品网站在线播放gif| 久久亚洲精品毛片| 欧美激情xxxx性bbbb| 国产精品免费观看在线| 欧美大胆a视频| 国产精品 欧美在线| 日韩国产精品一区| 亚洲欧美中文日韩v在线观看| 色黄久久久久久| 国产精品扒开腿爽爽爽视频| 欧美精品久久久久久久久久| 色中色综合影院手机版在线观看| 日本aⅴ大伊香蕉精品视频| 欧美亚洲成人xxx| 欧美专区日韩视频| 日韩精品极品在线观看| 国产亚洲人成网站在线观看| 久久男人资源视频| 91久久精品一区| 日韩精品视频免费专区在线播放| 色综合久久中文字幕综合网小说| 欧美丝袜一区二区三区| 国产精品视频一| 国产亚洲欧美一区| 色综合视频一区中文字幕| www.日韩欧美| 欧美自拍大量在线观看| 精品日本高清在线播放| 欧美电影在线观看| 精品久久久久久久久久ntr影视| 中国人与牲禽动交精品| 亚洲一级黄色av| 国产激情综合五月久久| 九九热这里只有在线精品视| 亚洲护士老师的毛茸茸最新章节| 91av在线看| 国产亚洲欧美一区| 亚洲精品永久免费| 91在线精品播放| 日韩欧美大尺度| 久久久久www| 日韩av中文字幕在线播放| 日韩美女毛茸茸| 亚洲精品久久久久久久久| 97久久精品国产| 久久全国免费视频| 欧美性少妇18aaaa视频| 精品国内自产拍在线观看| 色在人av网站天堂精品| 色综合男人天堂| 91久久精品在线| 亚洲美女久久久| 欧美一级高清免费| 高清一区二区三区四区五区| 欧美激情精品久久久久| 国产亚洲欧美aaaa| 日韩中文在线中文网三级| 日韩av网站导航| 国产视频自拍一区| 亚洲自拍偷拍色片视频| 国内免费久久久久久久久久久| 国产欧美在线看| 孩xxxx性bbbb欧美| 一区二区中文字幕| 国产精品爽爽爽爽爽爽在线观看| 国产精品欧美日韩久久| 欧美大片欧美激情性色a∨久久| 亚洲视频axxx| 蜜臀久久99精品久久久无需会员| 欧美麻豆久久久久久中文| 97avcom| 亚洲精品欧美一区二区三区| 成人a免费视频| yellow中文字幕久久| 国a精品视频大全| 亚洲视频在线播放| 国产成一区二区| 国产一区二区三区在线播放免费观看| 激情懂色av一区av二区av| 欧美激情视频在线| 国产成人97精品免费看片| 久久免费视频网| 久久伊人免费视频| 日韩中文字幕免费看| 91色视频在线观看| 欧美一级bbbbb性bbbb喷潮片|