天天看點

MSMQ(2)——.net下的消息隊列管理空間

System.Messaging 名字空間下包含了用于連接配接到、監視和管理網絡上的消息隊列并發送、接收或檢視消息的類。

其中一個主要的類是MessageQueue

它提供對消息隊列上的消息進行通路。

它有很多成員。例如

·Send方法用于向隊列中寫入消息。

·Receive,ReceiveById,ReceiveByCorrelationId方法用于從隊列中讀取消息。

·Peek與Receive相似隻是不更改隊列内容就是在赢取消息時不會從隊列中移除消息

·BeginPeek異步讀取消息

還提供了其它功能

·建立和删除消息隊列的隊列

·通過枚舉逐個通路隊列中的消息

·通過枚舉循環通路系統隊列

·設定基于ACL通路權限

·使用連接配接緩存

另一個類是Message

Message類可以對消息進行詳盡的控制且是隊列接收或檢視消息時使用的對象。除了消息正文外這個類的屬性還包括确認設定格式化程式選擇辨別身份驗證加密資訊時間戳伺服器日記不負死信隊列的訓示以及事務。

簡單類型的發送與接收

1建立隊列

private MessageQueue CreateQueue()

{

    string trPath=@".\Private$\SelfPrivateDemo";

    MessageQueue _queue;

    if (!MessageQueue.Exists(trPath))

       return MessageQueue.Create(trPath);

    _queue = new MessageQueue(trPath);

    return _queue;

}

這裡建立隊列對象然後可以通過隊列進行發送和接收等操作。

2發送字元串

public void SendMessage(string strMsg)

    MessageQueue _queue = CreateQueue();

    Message _message = new Message(strMsg);

    _queue.Send(_message);   

3接收字元串

public string ReceiveMessage()

    MessageQueue _queue = CreateQueue();   

    Message _message=_queue.Receive();

_message.Formatter =

new XmlMessageFormatter(new Type[] { typeof(string) });

    return _message.Body.ToString();

這裡解析隊列消息時要用到格式化器

4測試

mm.SendMessage("Hello,江");

這裡在消息隊列管理控制台中可以看到添加了隊列消息可以檢視一下它的内容

<?xml ver sion="1.0"?>

<string>Hello ,æ±</string>

大概是這段xml。因為傳遞消息用到了中文字元這裡又采用了文字編碼是以是亂碼狀态。

在接收時string strMsg = mm.ReceiveMessage();

會得到消息隊列中的消息并按格式化器解析為正确的類型。

消息Message對象可以設定正文Body也可以設定和擷取很多屬性。

Console.WriteLine("消息辨別{0}",_message.Id);      

Console.WriteLine("消息類型{0}", _message.MessageType.ToString());

部落格園大道至簡

http://www.cnblogs.com/jams742003/

轉載請注明部落格園

繼續閱讀