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());


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864