Message Queue(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。
上面一段呢,是百度百科的解释,我这里就不讲理论了,许多博客讲的都比我讲的好,我也只是照虎画猫,就讲一个简单的例子,供自己学习使用。如果对各位有帮助那是最好不过了。
首先我们先在自己电脑上安装MSMQ服务。具体步骤不多讲(WIN 7,WIN 8):控制面板--程序和功能--打开或关闭Windows功能--如下图,然后选中点击确定,让他安装完就可以了。
第二步:打开VS创建项目吧,我这个Demo很简单。
配置MSMQ路径,我这里用的是专用队列,我的路径如下:@".\private$\panzi";这里呢先不做解释,这个路径是专用队列的路径方式,.代表本机,当然也可以连接服务器的队列。
创建MessageQueue对象(引用System.Messaging命名空间)代码如下:
//判断队列是否已经存在,不存在就创建
if (!MessageQueue.Exists(QueuePath))
{
MessageQueue.Create(QueuePath);
}
return new MessageQueue(QueuePath);
调用队列的Send方法和Receive方法就可以了,是不是很简单呢。
public void Send(object msg) { var queue = GetBiQueue(); queue.Send(msg); }
public object ReceiveAndRemove() { var queue = GetBiQueue(); var message = queue.Receive(); return message.Body; }
上边的代码看不懂没关系,后边会有Demo下载,另外这个只是简单入门小例子,真正项目使用肯定不是这么简单啦。我们看看运行成果吧
队列里面已经有一条数据(控制面板-管理工具-计算机管理--消息队列):
那么我们接收一下这条消息:(这是我发的信息),已经接收到了,那么看看队列里面还有没有这条数据呢?再看一下已经没有了(不截图了)。如果想让队列数据继续保存用什么方法呢,可以用
queue.Peek(); 这样,数据能获取到,而且不会删除队列里的数据
好了,一个简单的MSMQ Demo就完成了,可能讲的不是很明白,当然啦,我这个暂时不是教学目的,是自己的个人总结,如果想学习,还是需要看博客园和其他一些大神的博客啦。
下一篇就要介绍一下 WCF如何和MSMQ结合的,不得不说WCF真牛逼。~~
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。