开发过程记录如下:

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. linux 下 java 链接oracle数据库

    import java.sql.*; public class Hello { private final String oracleDriverName = "oracle.jdbc.dr ...

  2. JSPatch 部署安全策略

    本文转载至 http://blog.cnbang.net/tech/2879/ 使用 JSPatch 有两个安全问题: 传输安全:JS 脚本可以调用任意 OC 方法,权限非常大,若被中间人攻击替换代码 ...

  3. maven默认本地仓库目录

    C:\Users\${姓名}\.m2\repository\

  4. WP8.1开发:简单天气预报应用(转)

    今天小梦给大家分享一个简单的天气预报应用源码:调用的是百度API.整个应用都没有什么难点.只是一个简单的网络请求和json数据处理.在WP8.1有小娜的情况下,天气预报应用还有意义吗?我认为还是有点意 ...

  5. TNS-12532: TNS:invalid argument,Oracle的报错信息太让人无语

    TNS-12532: TNS:invalid argument,Oracle的报错信息太让人无语 现象: Tnsping报错: [oracle@unicomGZ01 admin]$ ../../bin ...

  6. eagle学习汇总

    一.原理图编辑器 1. 编辑->全局属性->可以设置全局变量,选择“文本框”,以‘>’开头代表引用全局属性的值. 2. 绘制->Frame->可绘制原理图边框,一般选择“ ...

  7. C和C++书籍推荐

    http://bestcbooks.com/recommend/most-influential-book/ http://www.ruanyifeng.com/blog/2011/09/c_prog ...

  8. nginx作为下载文件服务器

    1.前言 当我们希望分享自己的文件时,有多种方式,局域网可以采用共享,rtx传输,qq传输,发送到邮箱,直接u盘拷贝等等.但最简单的就是开启本地服务器,其他电脑通过网页的方式直接下载,这里介绍使用ng ...

  9. Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法

    默认Attach to选择了Automatically determine the type of code to debug,显示Native Code.但附加进程到iexplore.exe断点无法 ...

  10. [SQL] 命令远程恢复数据库

    sp_configure ; RECONFIGURE; GO sp_configure ; RECONFIGURE; GO EXEC master..xp_cmdshell 'net use \\70 ...