控制台→程式集→開啟或關閉Windows功能
Microsoft Message Queue(MSMQ)勾選→確認
安裝完後可以在
電腦管理→服務與應用程式 看到(訊息佇列),這樣就完成安裝了。
實作:
實作會新增以下檔案:
- MailQueue.cs//實作MSMQ
- MailQueueTemplate.cs//MSMQ先關設定
- Variable.cs//取得Web.config appSettings 封裝
呼叫使用方法
//推送資料 MailQueue MailQueue = new MailQueue(); MailQueue.SendMessage("Test"); //取得資料 MailQueue MailQueue = new MailQueue(); var data = MailQueue.ReceiveMessage();
若資料送出成功可以到訊息佇列查詢該筆資料是否存在,用範例來看可以在佇列倒到"Test"這筆資料。
實作MSMQ功能:
新增Variable.cs
public static string GetAppSetting(string Key) { string AppSetting = string.Empty; AppSetting = System.Configuration.ConfigurationManager.AppSettings[Key]; return AppSetting; }
新增MailQueueTemplate.cs
public class MailQueueTemplate { /// <summary> /// 指定訊息佇列位置 /// </summary> public static string QueuePath { /// 規則是:服務器名\佇列名稱 // Private私有:電腦名稱\ PRIVATE $ \ 佇列名稱 // public 公用:電腦名稱\ 佇列名稱 // Journal日誌:電腦名稱\ 佇列名稱 \ $日誌 get { return Variable.GetAppSetting("QueuePath"); } } /// <summary> /// EmailQueueEnable /// </summary> public static string EmailQueueEnable { //true 啟用 //false 停用 get { return Variable.GetAppSetting("EmailQueueEnable"); } } }
web.configr加入
<appSettings> <!--EmailQueueEnable--> <add key="EmailQueueEnable" value="false" /> <!--QueuePath--> <add key="QueuePath" value=".\private$\myqueue" /> </appSettings>
新增MailQueue.cs 功能實作
public class MailQueue { /// <summary> /// 派送 MessageQueue /// </summary> public void SendMessage(object myData) { //string queuePath = @"FormatName:DIRECT=TCP:192.168.1.1\private$\myqueue";// 使用遠程IP指定訊息佇列位置 //string queuePath = @".\private$\myqueue";//使用本機方式指定訊息佇列位置 string queuePath = MailQueueTemplate.QueuePath; if (!MessageQueue.Exists(queuePath))//判斷 myqueue訊息佇列是否存在 { MessageQueue.Create(queuePath);//建立用來接受/發送的訊息佇列 } MessageQueue myQueue = new MessageQueue(queuePath); //發送訊息 myQueue.Send(myData, "SendQueue"); } /// <summary> /// 接收 MessageQueue /// </summary> public string ReceiveMessage() { try { //string queuePath = @".\private$\myqueue";//使用本機方式指定訊息佇列位置 string queuePath = MailQueueTemplate.QueuePath; MessageQueue myQueue = new MessageQueue(queuePath); myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });//設定接收訊息內容的型別 System.Messaging.Message message = myQueue.Receive();//接收訊息佇列內的訊息 string data = (string)message.Body;//將訊息內容轉成正確型別 return data; } catch(Exception ex) { throw; } } }
沒有留言:
張貼留言