WCF消息隊列的解決方案是什么,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、陸川網(wǎng)站維護(hù)、網(wǎng)站推廣。
消息就是信息的來源,在WCF中消息隊列分為公共隊列、專用隊列、管理隊列、響應(yīng)隊列四種,下面我們就簡單的分析一下WCF消息隊列吧。MessageQueue.Create參數(shù)是存放消息隊列的位置.這個基本就完成了創(chuàng)建和發(fā)送消息的主程序.下面我們來建立一個客戶端,來訪問消息隊列,獲取消息,同樣建立一個控制臺應(yīng)用程序,添加引用和代碼:
1namespace MSMQClient class Program { static void Main(string[] args) { //Get public queue message if (MessageQueue.Exists(@".FrankMSMQ"))//判斷是否存在消息隊列 { using(MessageQueue mq = new MessageQueue(@".FrankMSMQ"))//創(chuàng)建消息隊列對象 { mq.Formatter = new XmlMessageFormatter(new string[] { "System.String" });//設(shè)置消息隊列的格式化器 //mq.Send("Sample Message", ":Label"); Message msg = mq.Receive();//從隊列接受消息 Console.WriteLine("Received MSMQ Message is :{0}", msg.Body);//輸出消息 } //Console.Read(); } //Get private queue message if (MessageQueue.Exists(@".Private$FrankMSMQ"))//判斷私有消息是否存在 { using (MessageQueue mq = new MessageQueue(@".Private$FrankMSMQ")) { mq.Formatter = new XmlMessageFormatter(new string[] { "System.String" });//設(shè)置消息隊列格式化器 //mq.Send("Sample Message", ":Label"); Message msg = mq.Receive();//接收消息 Console.WriteLine("Received MSMQ Private Message is: {0}", msg.Body);//輸出消息 } } Console.Read(); } } }
消息接收同樣需要實例化一個WCF消息隊列對象, using(MessageQueue mq = new MessageQueue(@".FrankMSMQ"))負(fù)責(zé)創(chuàng)建WCF消息隊列對象.其次 mq.Formatter = new XmlMessageFormatter(new string[] { "System.String" })這行代碼負(fù)責(zé)設(shè)置消息隊列的格式化器,因為消息的傳遞過程中存在格式化的問題.我們接收消息的時候必須指定消息隊列的格式化屬性Formatter, 隊列才能接受消息。
XmlMessageFormatter的作用是進(jìn)行消息的XML串行化.BinaryMessageFormatter則把消息格式化為二進(jìn)制數(shù)據(jù)進(jìn)行傳輸.ActiveXMessageFormatter把消息同樣進(jìn)行二進(jìn)制格式化,區(qū)別是可以使用COM讀取隊列中的消息.當(dāng)然消息隊列還可以發(fā)送復(fù)雜的對象,前提是這個對象要可串行化,具體的格式取決與隊列的格式化器設(shè)置.此外消息隊列還支持事務(wù)隊列來確保消息只發(fā)送一次和發(fā)送的順序.最近在研究SOA,所以系統(tǒng)系統(tǒng)學(xué)習(xí)一下WCF及其相關(guān)的技術(shù)。
看完上述內(nèi)容,你們掌握WCF消息隊列的解決方案是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!