开发过程记录如下:

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. mysql基础知识笔记

    Mysql基础笔记 环境配置 基本概念 mysql命令行 进入 use show 查询 select order by where like 数据过滤regexp concat 文本函数 日期函数 数 ...

  2. 当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开

    当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开. 只有取消代理,本机才能访问其虚拟机linux系统上的网站

  3. Win8交互UX——笔交互

    针对触摸输入优化 Window 应用商店应用设计,并在默认情况下获得基本的笔支持. 本主题介绍笔交互的设计注意事项.有关实现笔交互的信息,请参阅响应笔和触笔交互. 笔交互 通过使用笔创建手写便笺.绘图 ...

  4. Material Design系列第八篇——Creating Lists and Cards

    Creating Lists and Cards //创建列表和卡片 To create complex lists and cards with material design styles in ...

  5. Android JSON语法解析示例

    参考: http://www.open-open.com/lib/view/open1326376799874.html https://www.cnblogs.com/jycboy/p/json_x ...

  6. Android studio Unable to start the daemon process

    Unable to start the daemon process.This problem might be caused by incorrect configuration of the da ...

  7. ndk编译android的lame库

    1.lame c库: https://github.com/intervigilium/liblame 下载后解压,进入目录,terminal里运行ndk-build即可 2.lame android ...

  8. Unity3D Shader图像扭曲过场效果

    把脚本挂在摄像机上 using UnityEngine; using System.Collections; [RequireComponent(typeof(Camera))] public cla ...

  9. PCB 铺铜 转载

    所谓覆铜,就是将PCB上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜.敷铜的意义在于,减小地线阻抗,提高抗干扰能力:降低压降,提高电源效率:还有,与地线相连,减小环路面积.如果PCB的地 ...

  10. 【BZOJ3774】最优选择 最小割

    [BZOJ3774]最优选择 Description 小N手上有一个N*M的方格图,控制某一个点要付出Aij的代价,然后某个点如果被控制了,或者他周围的所有点(上下左右)都被控制了,那么他就算是被选择 ...