MSMQ能够被当作一个数据储存装置,就如同数据库,只不过数据存储的是一条一条的记录,而MSMQ存储的是一个一个的消息(messsge)。Message能够被理解为一种数据容器,咱们在稍后会讲到。MSMQ一个重要的应用场景就是离线信息交互,例如,咱们在给朋友发送邮件,而此时朋友并未登入邮箱,这个时候咱们的邮件就能够发到邮件服务器的MSMQ队列中,当朋友登入邮箱的时候,系统在从服务器的MSMQ队列中取出U件。固然MSMQ的用途远不止这些,例如,充当数据缓存,实现异步操做等等,这里就不在一一举例了。html
咱们在使用MSMQ的时候须要安装MSMQ,具体步骤请点击 这里。当咱们正确的安装了MSMQ咱们能够在"计算机管理(本地)"找到安装的MSMQ服务,以下图数据库
在图上咱们能够看见系统的消息队列,为咱们提供了3种队列传出队列,专用队列和系统队列,而用户能自由建立的只有专用队列。咱们能够尝试建立一个专用队列,"右击"专用队列,再点击"新建",获得新增界面以下图。因为咱们建立的是专用队列,因此在队列命名上面显示的添加"private$",另外一个事务复选框表示咱们要建立的是队列是否为事务队列,这个在稍后我会详细的解释缓存
我在专用队列里面添加一个叫"shaoshun"的专用队列,在专用队列文件夹下面就能够找到,如图服务器
消息是MSMQ的存储对象,封装为System.Messaging.Message对象,它由一个主体(body)和若干属性构成,其中咱们的用户数据一般被序列化装入body主体中,这也是咱们称它为数据容器的缘由。除了body属性,还有几个属性相对来讲比较重要:Priority(消息的优先级),Label(用户定义的消息标识),Formatter(消息的序列组件,当用户将复杂类型数据填充到body中,用户的数据会先被序列化)异步
在前面,咱们经过手动建立了一个专用队列。咱们知道队列分事务性队列和非事务性队列,默认建立的是非事务性队列。当咱们勾选事务性复选框,咱们就会建立事务性队列,那么什么是事务性队列呢?事务性队列将消息保存在磁盘上,实现了持久化,也就是说当咱们关机,断电后,下次再启动机器,咱们的消息依然保存在队列里面,而非事务性队列则将消息保存在内存中,也就是说我重启电脑后,队列里面的消息将不存在了。post
队列支持事务操做,当咱们把对多个消息的接收操做归入一个事务中,那么只要有一个消息接收不成功,队列将抛弃前面接收的全部消息,实现事务回滚。队列事务同时支持消息按顺序接收与发送。学习
本文我对MSMQ的相关概念进行了说明,在下一篇,我将经过代码来介绍MSMQ在.net中的常规操做.net