• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

.net msmq消息队列实例详解

asp 搞代码 4年前 (2022-01-03) 31次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了.net msmq消息队列的实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文为大家分享了.net msmq消息队列实例代码,供大家参考,具体内容如下

1.msmq消息队列windows环境安装

控制面板—-》程序和功能—-》启用或关闭Windows程序—-》Microsoft Message Queue(MSMQ)服务器

选中如图所示功能点击“确认”进行安装,安装好后可在 “计算机管理”中进行查看

2.创建消息队列实体对象

 /// <summary> /// 消息实体 /// </summary> [Serializable] public class MsmqData { public int Id { get; set; } public string Name { get; set; } } 

实体对象必须可序列化来源gaodai#ma#com搞*!代#%^码网,即需添加[Serializable]

3.创建消息队列管理对象

 /// <summary> /// 消息队列管理对象 /// </summary> public class MSMQManager { /// <summary> /// 消息队列地址 /// </summary> public string _path; /// <summary> /// 消息队列对象 /// </summary> public MessageQueue _msmq; /// <summary> /// 构造函数并初始化消息队列对象 /// </summary> ///  public MSMQManager(string path = null) { if (string.IsNullOrEmpty(path)) { _path = ConfigurationManager.AppSettings["MsmqPath"].ToString(); } else { _path = path; } if (MessageQueue.Exists(_path)) { _msmq = new MessageQueue(_path); } else { _msmq = MessageQueue.Create(_path); } } /// <summary> /// 发送消息队列 /// </summary> ///  public void Send(object body) { _msmq.Send(new Message(body, new XmlMessageFormatter(new Type[] { typeof(MsmqData) }))); } /// <summary> /// 接受队列中第一个消息后删除 /// </summary> ///  public object ReceiveMessage() { var msg = _msmq.Receive(); if (msg != null) { //msg.Formatter = new BinaryMessageFormatter(); msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(MsmqData) }); var body = (MsmqData)msg.Body; Console.WriteLine("消息内容:{0},{1}", body.Id, body.Name); return msg.Body; } return null; } /// <summary> /// 遍历消息队列中的消息并删除 /// </summary> public void WriteAllMessage() { var enumerator = _msmq.GetMessageEnumerator2(); while (enumerator.MoveNext()) { Message msg = (Message)(enumerator.Current); //msg.Formatter = new BinaryMessageFormatter(); msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(MsmqData) }); var body = (MsmqData)msg.Body; Console.WriteLine("消息内容:{0},{1}", body.Id, body.Name); //根据消息ID查询并删除消息队列 _msmq.ReceiveById(msg.Id); } } } 

此例中使用XML格式(XmlMessageFormtter)对消息进行格式化

4.主程序添加调用消息队列

 static void Main(string[] args) { var msmqManager = new MSMQManager(); for (int i = 1; i <= 10; i++) { MsmqData data = new MsmqData() { Id = i, Name = string.Format("Name{0}", i) }; //发送消息 msmqManager.Send(data); } var msg = msmqManager.ReceiveMessage(); msmqManager.WriteAllMessage(); Console.ReadLine(); } 

添加消息队列地址配置,本例使用私有队列 

  

5.运行程序查看结果

可以在发送完消息后打上断点查看消息队列消息正文

最后运行结果

6.常见消息队列类型路径的语法

队列类型
路径中使用的语法

公共队列
MachineName\QueueName

专用队列
MachineName\Private$\QueueName

日志队列
MachineName\QueueName\Journal$

以上就是.net msmq消息队列实例详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:.net msmq消息队列实例详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址