开发过程记录如下:

1、   本机配置MSMQ ------控制面板-------启动或者关闭Windows功能----默认安装MSMQ即可

注意:本地安装后再VS中才能引用System.Messaging;

安装后:计算机管理界面出现消息队列

2.创建控制台程序

引用:

using System.Configuration;

using System.Messaging;

3.MSMQ传递消息格式为XML 或二进制

获取指定路径下的所有XML文本

发送到本地队列中

#region 使用本地初始化信息队列

//MessageQueue messageQueue = null;

// if (MessageQueue.Exists(@".\private$\MQtest1"))

// {

//    messageQueue = new MessageQueue(@".\Private$\MQtest1");

//    messageQueue.Label = "MQtesting";

// }

// else

// {

//     messageQueue = MessageQueue.Create(@".\Private$\MQtest1");

//     messageQueue.Label = "MQtest1";

// }

#endregion

#region  获取路径下所有xml文件

string path = ConfigurationManager.AppSettings["path"].ToString();

var files = Directory.GetFiles(path, "*.xml");

//messageQueue.Formatter = new XmlMessageFormatter(files);

foreach (var file in files)

{

//打印测试是否获取到文件

//Console.WriteLine(file);

//加载xml内容

XmlDocument doc = new XmlDocument();

doc.Load(file);

string xs = doc.InnerXml;

Message ms = new Message();

ms.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });

ms.Body = xs;

messageQueue.Send(ms);

}

#endregion

生成结果:

4.发送消息到远端MSMQ

远端无需创建,无需验证是否存在

#region  使用远端队列

//string queuepath = ConfigurationManager.AppSettings["hxqueue"].ToString();

MessageQueue messageQueue = new MessageQueue(@"FormatName:Direct=TCP: (远端IP) \private$\SoarMQtest1");

#endregion

发送消息后,本地会出现传出队列

如图:

远端MSMQ会出现消息数据:

5.消息的序列化和消息的接收

System.Messaging.Message mes = messageQueue.Receive();//获取单条数据(如果没有数据,当前进程会被阻塞)

mes.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });

string message = mes.Body.ToString();

Console.WriteLine(message);

1、全部获取,循环处理?

2、线程逐个抓取,逐个处理?

还需要研究部分:

1、   把控制台程序写成后台服务?监听文件夹中文件,

2、   发送到MSMQ的数据如果保存到对应磁盘

3、   除了string类型,是否有其他类型传输方式

MSMQ研究的更多相关文章

  1. 基于WCF MSMQ 的企业应用解决方案

    最近研究了一下基于MSMQ的WCF应用,从书上.网上查了很多资料,但始终没能彻底理解WCF-MSMQ的工作原理,也没能得到一个合理的应用解决方案.索性还是自己做个实验,探索一下吧.经过反复试验,颇有收 ...

  2. MSMQ消息队列 用法

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

  3. (转)MSMQ续

    原文作者:虔诚者    点此传送至原文 在上一篇我简单介绍了MSMQ的相关概念,本篇将以代码说明 Message Message是MSMQ的数据存储单元,我们的用户数据一般也被填充在Message的b ...

  4. (转)MSMQ(消息队列)

    原文作者:虔诚者    点此传送至原文   前段时间研究WCF接触到了MSMQ,所以认真的学习了一下,下面是我的笔记. 我理解的MSMQ MSMQ可以被看成一个数据储存装置,就如同数据库,只不过数据存 ...

  5. MSMQ(消息队列)续

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

  6. MSMQ(消息队列)

    前段时间研究WCF接触到了MSMQ,所以认真的学习了一下,下面是我的笔记. 我理解的MSMQ MSMQ可以被看成一个数据储存装置,就如同数据库,只不过数据存储的是一条一条的记录,而MSMQ存储的是一个 ...

  7. WCF MSMQ

    基于WCF MSMQ 的企业应用解决方案   最近研究了一下基于MSMQ的WCF应用,从书上.网上查了很多资料,但始终没能彻底理解WCF-MSMQ的工作原理,也没能得到一个合理的应用解决方案.索性还是 ...

  8. MSMQ .NET下的应用

    Message Message是MSMQ的数据存储单元,我们的用户数据一般也被填充在Message的body当中,因此很重要,让我们来看一看其在.net中的体现,如图: 在图上我们可以看见,Messa ...

  9. 实战WCF中net.tcp和net.msmq绑定协议

    平时很少写博文的,以前都是转载其他园友的文章,这几天有时间就自己尝试写一些wcf相关的文章,希望能给有需要的人带来一点帮助吧,水平有限再加上初次动手,写得不好还请多多包含!废话不多说了直接进入正题. ...

随机推荐

  1. AndroidのTextView之CompoundDrawable那些坑

    TextView有几个属性android:drawableXXX,通常是在环绕文字周边显示一个图像,但是这有个坑就是文字和图片可能会对不齐. 纵使你设置gravity还是layout_gravity= ...

  2. Android手机资料拷贝导出工具 --- 91手机助手

    http://zs.91.com/

  3. LeetCode 15 3Sum(3个数求和为0的组合)

    题目链接 https://leetcode.com/problems/3sum/?tab=Description   Problem: 给定整数集合,找到所有满足a+b+c=0的元素组合,要求该组合不 ...

  4. 【咸鱼教程】本地图片上传。动态GIF表情图生成

    本案例参考:http://emoji.decathlon.trustingme.cn/但是实现方式不一样. 教程目录一 head first二 打开本地图片功能三 拖拽和缩放手势,调整图片四 gifj ...

  5. 理解Buffer

    Buffer对象是Node.js用来处理二进制数据的一个接口.JavaScript比较擅长处理Unicode数据,对于处理二进制格式的数据(比如TCP数据流),就不太擅长.Buffer对象就是为了解决 ...

  6. vue--循环列表

    <template> <div id="app"> <p v-for="x in list">{{x}}</p> ...

  7. resize 按钮不会被伪元素遮盖

    textarea默认有个resize样式,效果就是下面这样 读 <css 揭秘>时发现两个亮点: 其实这个属性不仅适用于 textarea 元素,适用于下面所有元素: elements w ...

  8. Zookeeper可以干什么

    在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, n ...

  9. Jenkins构建报错(Jenkins is reserved for jobs with matching label expression)解决办法

    Jenkins构建报错Jenkins is reserved for jobs with matching label expression 原因节点配置导致 修改配置

  10. Python内置函数之isinstance,issubclass

    isinstance判断一个变量的类型 >>> n1 = 10>>> isinstance (n1,int)True 判断n1是否是数字类型,如果是返回True如果 ...