本文为大家分享了.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; }
 }
实体对象必须可序列化,即需添加[Serializable]
3.创建消息队列管理对象
 /// <summary>
 /// 消息队列管理对象
 /// </summary>
 public class MSMQManager
 {
 /// <summary>
 /// 消息队列地址
 /// </summary>
 public string _path;
 /// <summary>
 /// 消息队列对象
 /// </summary>
 public MessageQueue _msmq;
 /// <summary>
 /// 构造函数并初始化消息队列对象
 /// </summary>
 /// <param name="path"></param>
 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>
 /// <param name="body"></param>
 public void Send(object body)
 {
  _msmq.Send(new Message(body, new XmlMessageFormatter(new Type[] { typeof(MsmqData) })));
 }
 /// <summary>
 /// 接受队列中第一个消息后删除
 /// </summary>
 /// <returns></returns>
 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();
 }
添加消息队列地址配置,本例使用私有队列
<appSettings> <add key="MsmqPath" value=".\private$\myQueue"/> </appSettings>
5.运行程序查看结果
可以在发送完消息后打上断点查看消息队列消息正文
最后运行结果
6.常见消息队列类型路径的语法
队列类型
路径中使用的语法
公共队列
MachineName\QueueName
专用队列
MachineName\Private$\QueueName
日志队列
MachineName\QueueName\Journal$
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
                                    标签:
                                        
                            .net,msmq,消息队列
                                免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
                                如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
                            
                        白云城资源网 Copyright www.dyhadc.com
                        暂无“.net msmq消息队列实例详解”评论...
                                    稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2025年11月04日
                                2025年11月04日
                    - 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
 - 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
 - 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
 - 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
 - 群星《2024好听新歌42》AI调整音效【WAV分轨】
 - 王思雨-《思念陪着鸿雁飞》WAV
 - 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
 - 李健《无时无刻》[WAV+CUE][590M]
 - 陈奕迅《酝酿》[WAV分轨][502M]
 - 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
 - 群星《吉他王(黑胶CD)》[WAV+CUE]
 - 齐秦《穿乐(穿越)》[WAV+CUE]
 - 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
 - 邝美云《邝美云精装歌集》[DSF][1.6G]
 - 吕方《爱一回伤一回》[WAV+CUE][454M]
 
                        


