控制台→程式集→開啟或關閉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;
}
}
}




沒有留言:
張貼留言