首页 / 消息队列 / C#使用消息队列(MSMQ)
C#使用消息队列(MSMQ)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#使用消息队列(MSMQ),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2918字,纯文字阅读大概需要5分钟。
内容图文
首先说一下,消息队列 (MSMQ Microsoft Message Queuing)是MS提供的服务,也就是Windows操作系统的功能,并不是.Net提供的。
MSDN上的解释如下:
Message Queuing (MSMQ) technology enables applications running at different times to communicate across heterogeneous networks and systems that may be temporarily offline.
Applications send messages to queues and read messages from queues.
The following illustration shows how a queue can hold messages that are generated by multiple sending applications and read by multiple receiving applications.
消息队列(MSMQ)技术使得运行于不同时间的应用程序能够在各种各样的网络和可能暂时脱机的系统之间进行通信。
应用程序将消息发送到队列,并从队列中读取消息。
下图演示了消息队列如何保存由多个发送应用程序生成的消息,并被多个接收应用程序读取。
消息一旦发送到队列中,便会一直存在,即使发送的应用程序已经关闭。
MSMQ服务默认是关闭的,(Window7及以上操作系统)按以下方式打开
1、打开运行,输入"OptionalFeatures",钩上Microsoft Message Queue(MSMQ)服务器。
(Windows Server 2008R2及以上)按以下方式打开
2、打开运行,输入"appwiz.cpl",在任务列表中选择“打开或关闭Windows功能”
然后在"添加角色"中选择消息队列
消息队列分为以下几种,每种队列的路径表示形式如下:
公用队列 MachineName\QueueName
专用队列 MachineName\Private$\QueueName
日记队列 MachineName\QueueName\Journal$
计算机日记队列 MachineName\Journal$
计算机死信队列 MachineName\Deadletter$
计算机事务性死信队列 MachineName\XactDeadletter$
这里的MachineName可以用 “."代替,代表当前计算机
需要先引用System.Messaging.dll
创建消息队列
//消息队列路径 string path = ".\\Private$\\myQueue"; MessageQueue queue; //如果存在指定路径的消息队列 if(MessageQueue.Exists(path)) { //获取这个消息队列 queue = new MessageQueue(path); } else { //不存在,就创建一个新的,并获取这个消息队列对象 queue = MessageQueue.Create(path); }
发送字符串消息
System.Messaging.Message msg = new System.Messaging.Message(); //内容 msg.Body = "Hello World"; //指定格式化程序 msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) }); queue.Send(msg);
发送消息的时候要指定格式化程序,如果不指定,格式化程序将默认为XmlMessageFormatter(使用基于 XSD 架构定义的 XML 格式来接收和发送消息。)
接收字符串消息
//接收到的消息对象 System.Messaging.Message msg = queue.Receive(); //指定格式化程序 msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) }); //接收到的内容 string str = msg.Body.ToString();
发送二进制消息(如图像)
1 System.Drawing.Image image = System.Drawing.Bitmap.FromFile("a.jpg"); 2 Message message = new Message(image, new BinaryMessageFormatter()); 3 queue.Send(message);
接收二进制消息
1 System.Messaging.Message message = queue.Receive(); 2 System.Drawing.Bitmap image= (System.Drawing.Bitmap)message.Body; 3 image.Save("a.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
获取消息队列的消息的数量
int num = queue.GetAllMessages().Length;
清空消息队列
queue.Purge();
内容总结
以上是互联网集市为您收集整理的C#使用消息队列(MSMQ)全部内容,希望文章能够帮你解决C#使用消息队列(MSMQ)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。