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. Android学习之 adb被占用解决办法

    1.adb被占用解决办法 方法一:(1)查看5037端口哪个进程在用          netstat -a -o 5037 (2)查看上面进程是哪个执行文件在占用          tasklist ...

  2. flutter 保存图片到本地

    f'lutter 图片的保存 分为俩步: 1.开启存储图片权限开启权限需要用到permission_handler pubspec 添加 permission_handler: ^3.0.1下载包就可 ...

  3. luoguP4513 小白逛公园

    https://www.luogu.org/problemnew/show/P4513 题意是给你一个序列,计算一个区间内的最大字段和,支持单点修改 线段树维护左起最大字段和,右起最大字段和,区间和和 ...

  4. HDU6333-2018ACM暑假多校联合训练1002-Harvest of Apples-莫队+费马小定理

    题意很简单啦,求S(n,m)的值 通过打表我们可以知道 S(n + 1, m) = S(n, m) * 2 - C(n, m); S(n - 1, m) = (S(n, m) + C(n - 1, m ...

  5. [ActionScript 3.0] PrintJob打印功能

    package { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.MouseEvent; ...

  6. 区分Web服务器、HTTP服务器、应用程序服务器

    在学习前端的过程中.进程听到和看到web服务器.HTTP服务器.应用程序服务器,但一直不知道它们有什么区别,迷惑了好久,今天查看的很多博客,终于算是梳理通了,下面我就来总结一下它们的区别,顺别了解一些 ...

  7. Spark - 经典案例

    初识 Spark 大数据处理,目前还只是小白阶段,初步搭建起运行环境,慢慢学习之. 本文熟悉下 Spark 数据处理的几个经典案例. 首先将 Scala SDK 的源码导入 IDEA,方便查看和调试代 ...

  8. leetcode-766-Toeplitz Matrix(每一条对角线元素的比较)

    题目描述: A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now ...

  9. 使用Avd 调试慢的解决方案

         AVD 太慢了,不仅启动,而且运行慢.以致于要用手机去调.你觉得这样方便吗?     如果没有一个简单快速的开发调试环境,把时间都浪费在启动,调试及等待上,那是对生命的浪费.   必要条件: ...

  10. 关于导入本地maven项目pom.xml出现missing artifact org....报错处理

    一.导入本地maven项目步骤: