MSMQ介绍

  最近的项目中用到了MSMQ,简单的使用到了它,现总结下。有些是网上的资料有些是自己的笔记。

MSMQ理解

       Message Queue(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。

它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。

MSMQ-MicroSoft Message Queuing可以被看成一个数据储存装置,就如同数据库,只不过数据存储的是一条一条的记录,而MSMQ存储的是一个一个的消息(messsge)

MSMQ一个重要的应用场景就是离线信息交互,例如,我们在给朋友发送邮件,而此时朋友并未登入邮箱,这个时候我们的邮件就可以发到邮件服务器的MSMQ队列中,当朋友登入邮箱的时候,系统在从服务器的MSMQ队列中取出邮件。当然MSMQ的用途远不止这些,例如,充当数据缓存,实现异步操作等等,这里就不在一一举例了。

MSMQ的安装

  我们在使用MSMQ的时候需要安装MSMQ,具体步骤:

控制面板-》程序和功能-》打开或关闭windows功能-》将其中的Microsoft Message Queue (MSMQ)打上勾确定即可,便执行安装消息队列。

 

当我们正确的安装了MSMQ我们可以在"计算机管理(本地)"找到安装的MSMQ服务,如下图

在图上我们可以看见系统的消息队列,为我们提供了3种队列:传出队列,专用队列和系统队列,而用户能自由创建的只有专用队列

我们可以尝试创建一个专用队列,"右击"专用队列,再点击"新建",得到新增界面如下图。由于我们创建的是专用队列,所以在队列命名上面显示的添加"private$",另一个事务复选框表示我们要创建的是队列是否为事务队列。

我在专用队列里面添加一个叫"shaoshun"的专用队列,在专用队列文件夹下面就可以找到。

名称解释 

  • 消息

  消息是MSMQ的存储对象,封装为System.Messaging.Message对象,它由一个主体(body)和若干属性构成,其中我们的用户数据通常被序列化装入body主体中,这也是我们称它为数据容器的原因。除了body属性,还有几个属性相对来说比较重要:Priority(消息的优先级),Label(用户定义的消息标识),Formatter(消息的序列组件,当用户将复杂类型数据填充到body中,用户的数据会先被序列化)。

它可以是各式各样的媒体,如文本、声音、图象等等。 消息最终的理解方式,为消息传递的双方事先商定,这样做的好处是,一是相当于对数据进行了简单的加密,二则采用自己定义的格式可以节省通信的传递量

消息可以含有发送和接收者的标识,这样只有指定的用户才能看到只传递给他的信息和返回是否操作成功的回执。消息也可以含有时间戳,以便于接收方对某些与时间相关的应用进行处理。消息还可以含有到期时间,它表明如果在指定时间内消息还未到达则作废,这主要应用与时间性关联较为紧密的应用。

  • 队列

  队列是发送和接收消息的公用存储空间,它可以存在于内存中或者是物理文件中。

队列分事务性队列和非事务性队列,默认创建的是非事务性队列。当我们勾选事务性复选框,我们就会创建事务性队列,那么什么是事务性队列呢?

事务性队列将消息保存在磁盘上,实现了持久化,也就是说当我们关机,断电后,下次再启动机器,我们的消息依然保存在队列里面,而非事务性队列则将消息保存在内存中,也就是说我重启电脑后,队列里面的消息将不存在了。 

队列支持事务操作,当我们把对多个消息的接收操作纳入一个事务中,那么只要有一个消息接收不成功,队列将抛弃前面接收的所有消息,实现事务回滚。队列事务同时支持消息按顺序接收与发送。

  • 消息处理过程

MSMQ消息队列中定义的消息由一个主体(body)和若干属性构成。消息的主体可以由文本,二进制构成,根据需要还可以被加密。 在MSMQ中消息大小不能够超过4MB

 

  

转载于:https://www.cnblogs.com/peterYong/p/10871877.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值