c#MSMQ简单使用的心得

本文介绍了在C#中如何使用MSMQ,包括创建、初始化消息队列,以及发送、接收、删除消息等基本操作。同时提到了消息队列的路径设定,如创建私有队列和日志队列,并提供了查看和管理队列的方法。此外,文章讨论了消息的读取和序列化,并提及了清理和删除队列的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要想使用MSMQ必须现在添加功能中添加 '消息队列' 功能,

安装完成之后,环境就没有这方面的问题了.

在c#中可以通过拖拽控件的方式建立一个MessageQueue对象,也可以通过创建类的方式 new一个MessageQueue对象,

之后要对MessageQueue进行初始化,需要提供MessageQueue的路径,路径中包含了要创建的队列是公开的还是私有的及消息队列的名称.例如:

当路径不存在时(队列不存在):MessageQueue.Create(@".\private$\myQueue");这句表示创建一个名为myQueue的专有(私有)消息队列,

还有Journal$表示创建的是日志队列MessageQueue.Create(@".\myQueue\Journal$");这里的Journal$在队列名之后

以及什么都不加的公公队列MessageQueue.Create(@".\myQueue");

路径中的"."代表本机名称,一般用"."就行了,当然使用本机名称也是完全没有问题的.

如果队列已经存在,也可以在创建对象直接初始化, new MessageQueue(@".\private$\myQueue"),也是可以的.或者通过给Path属性赋值  例如:

          MessageQueue messagequeue1= new MessageQueue(); 

           messagequeue1.path = @".\private$\myQueue";

创建完成后可以通过win+r 输入 compmgmt.msc 打开计算机管理,在最下面的服务和应用程序子目录中有消息队列,展开专用队列就可以找到你的队列.名称上右键可以设置队列的属性,包括存储限额大小之类的属性.

之后通过send方法发送消息到队列,那个队列对象调用的send方法,就往哪个队列里写

通过receive方法读队列,同样的,谁调用的,从谁的队列里读,读队列里的第一条并删除.

读取到的数据如果有特殊格式就需要进行解析.如果没有就直接调用 .Body属性,里面保存的是消息的内容.

例如 :

          System.Messaging.Message msg = messageQueue2.Receive();//receive函数,读消息队列的第一条消息到msg中,并删除                         队列中的第一条消息.
          msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });//这里将接收到的消息序列化成字符串.string可以替换成别的,可以是基础数据类型,也可以是你自己写的类,

          string result = msg.Body //将消息内容保存到string类型的result中.这里的返回类型如果不是string的话需要进行强制类型转换,例如 myClass result = (myClass)msg.Body.前提是你的消息真的是这个类型,否则会引发异常

相对的有一个peek方法,只读队列但不删除.

清空队列用Purge方法,这个函数会清空队列里的所有消息,但消息队列本身还存在,还可以继续读写消息,

delete方法会直接删除消息队列本身,删除之后就没有这个消息队列了.之后就不能再对这个队列进行操作了.(除非再创建一次)

最后是close方法,字面意思,关闭当前消息队列.

PS:推荐一篇文章

     https://blog.youkuaiyun.com/xpj8888/article/details/85006879

全是链接,太强了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值