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 = ; i <= ; 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$

【6】.net msmq消息队列实例的更多相关文章

  1. 微软MSMQ消息队列的使用

    首先在windows系统中安装MSMQ 一.MSMQ交互 开发基于消息的应用程序从队列开始.MSMQ包含四种队列类型: 外发队列:消息发送到目的地之前,用它来临时存储消息. 公共队列:在主动目录中公布 ...

  2. 【转】MSMQ消息队列安装

    一.Windows 7安装.管理消息队列1.安装消息队列   执行用户必须要有本地 Administrators 组中的成员身份,或等效身份.   具体步骤:    开始—>控制面板—>程 ...

  3. MSMQ消息队列安装

    一.Windows 7安装.管理消息队列1.安装消息队列   执行用户必须要有本地 Administrators 组中的成员身份,或等效身份.   具体步骤:    开始—>控制面板—>程 ...

  4. MSMQ消息队列 用法

    引言 接下来的三篇文章是讨论有关企业分布式开发的文章,这三篇文章筹划了很长时间,文章的技术并不算新,但是文章中使用到的技术都是经过笔者研究实践后总结的,正所谓站在巨人的肩膀上,笔者并不是巨人,但也希望 ...

  5. 跟我一起学WCF(1)——MSMQ消息队列

    一.引言 Windows Communication Foundation(WCF)是Microsoft为构建面向服务的应用程序而提供的统一编程模型,该服务模型提供了支持松散耦合和版本管理的序列化功能 ...

  6. C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

  7. MSMQ(消息队列)续

    在上一篇我简单介绍了MSMQ的相关概念,本篇将以代码说明 Message Message是MSMQ的数据存储单元,我们的用户数据一般也被填充在Message的body当中,因此很重要,让我们来看一看其 ...

  8. C#实战Microsoft Messaging Queue(MSMQ)消息队列

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

  9. C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)<转>

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

随机推荐

  1. jqury属性操作,特殊效果

    一. 常用属性操作 1.html() 取出或设置html内容 // 取出html内容 var $htm = $('#div1').html(); // 设置html内容 $('#div1').html ...

  2. java集合类学习笔记之HashMap

    1.简述 HashMap是java语言中非常典型的数据结构,也是我们平常用的最多的的集合类之一.它的底层是通过一个单向链表(Node<k,v>)数组(也称之为桶bucket,数组的长度也叫 ...

  3. [inside hotspot] 汇编模板解释器(Template Interpreter)和字节码执行

    [inside hotspot] 汇编模板解释器(Template Interpreter)和字节码执行 1.模板解释器 hotspot解释器模块(hotspot\src\share\vm\inter ...

  4. Java非静态代码块和静态代码块

    类中存在两种特殊的代码块,即非静态代码块和静态代码块,前者是直接由 { } 括起来的代码,而后者是由 static{ } 括起来的代码. 非静态代码块在类初始化创建实例时,将会被提取到类的构造器中执行 ...

  5. [BZOJ 5074][Lydsy1710月赛]小B的数字

    传送门 \(\color{green}{solution}\) 设 \[b_{i}=2^{w_{i}},sum= \sum_{i=1}^{n}{w_{i}}\] 则对于任意\(a_{i}\)都有 \[ ...

  6. [转] linux nc命令

    [From] https://blog.csdn.net/freeking101/article/details/53289198 NC 全名 Netcat (网络刀),作者是 Hobbit & ...

  7. SpringBoot 整合 slf4j 日志打印

    划水时间,记录一下用到的相关slf4j 日志打印,如何实现配置输出.本地保存log日志文件... 我使用的是SpringBoot框架,slf4j 类库已经包含到了 SpringBoot 框架中,所有, ...

  8. Java .Net Byte数组存储差异以及解决方法

    最近在Java与.Net服务Bytes数据交互碰到一个问题:.Net IntToBytes结果和Java IntToBytes结果是反序的,查了一下发现:Java stores things inte ...

  9. mysql故障总结

    MYSQL故障排查 https://zhuanlan.zhihu.com/p/27834293

  10. springboot 上传图片与回显

    在网上找了很多例子,不能完全契合自己的需求,自行整理了下.需求是这样的:项目小,所以不需要单独的图片服务器,图片保存在服务器中任意的地方,并且可以通过访问服务器来获取图片.话不多说上代码: 1.依赖 ...