MSMQ研究
开发过程记录如下:
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研究的更多相关文章
- 基于WCF MSMQ 的企业应用解决方案
最近研究了一下基于MSMQ的WCF应用,从书上.网上查了很多资料,但始终没能彻底理解WCF-MSMQ的工作原理,也没能得到一个合理的应用解决方案.索性还是自己做个实验,探索一下吧.经过反复试验,颇有收 ...
- MSMQ消息队列 用法
引言 接下来的三篇文章是讨论有关企业分布式开发的文章,这三篇文章筹划了很长时间,文章的技术并不算新,但是文章中使用到的技术都是经过笔者研究实践后总结的,正所谓站在巨人的肩膀上,笔者并不是巨人,但也希望 ...
- (转)MSMQ续
原文作者:虔诚者 点此传送至原文 在上一篇我简单介绍了MSMQ的相关概念,本篇将以代码说明 Message Message是MSMQ的数据存储单元,我们的用户数据一般也被填充在Message的b ...
- (转)MSMQ(消息队列)
原文作者:虔诚者 点此传送至原文 前段时间研究WCF接触到了MSMQ,所以认真的学习了一下,下面是我的笔记. 我理解的MSMQ MSMQ可以被看成一个数据储存装置,就如同数据库,只不过数据存 ...
- MSMQ(消息队列)续
在上一篇我简单介绍了MSMQ的相关概念,本篇将以代码说明 Message Message是MSMQ的数据存储单元,我们的用户数据一般也被填充在Message的body当中,因此很重要,让我们来看一看其 ...
- MSMQ(消息队列)
前段时间研究WCF接触到了MSMQ,所以认真的学习了一下,下面是我的笔记. 我理解的MSMQ MSMQ可以被看成一个数据储存装置,就如同数据库,只不过数据存储的是一条一条的记录,而MSMQ存储的是一个 ...
- WCF MSMQ
基于WCF MSMQ 的企业应用解决方案 最近研究了一下基于MSMQ的WCF应用,从书上.网上查了很多资料,但始终没能彻底理解WCF-MSMQ的工作原理,也没能得到一个合理的应用解决方案.索性还是 ...
- MSMQ .NET下的应用
Message Message是MSMQ的数据存储单元,我们的用户数据一般也被填充在Message的body当中,因此很重要,让我们来看一看其在.net中的体现,如图: 在图上我们可以看见,Messa ...
- 实战WCF中net.tcp和net.msmq绑定协议
平时很少写博文的,以前都是转载其他园友的文章,这几天有时间就自己尝试写一些wcf相关的文章,希望能给有需要的人带来一点帮助吧,水平有限再加上初次动手,写得不好还请多多包含!废话不多说了直接进入正题. ...
随机推荐
- mysql基础知识笔记
Mysql基础笔记 环境配置 基本概念 mysql命令行 进入 use show 查询 select order by where like 数据过滤regexp concat 文本函数 日期函数 数 ...
- 当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开
当本机通过代理服务器上网时,本机无法打开在本机上的虚拟机(oracle vm)linux系统上的网站,但是局域网里的其他机器却可以打开. 只有取消代理,本机才能访问其虚拟机linux系统上的网站
- Win8交互UX——笔交互
针对触摸输入优化 Window 应用商店应用设计,并在默认情况下获得基本的笔支持. 本主题介绍笔交互的设计注意事项.有关实现笔交互的信息,请参阅响应笔和触笔交互. 笔交互 通过使用笔创建手写便笺.绘图 ...
- Material Design系列第八篇——Creating Lists and Cards
Creating Lists and Cards //创建列表和卡片 To create complex lists and cards with material design styles in ...
- Android JSON语法解析示例
参考: http://www.open-open.com/lib/view/open1326376799874.html https://www.cnblogs.com/jycboy/p/json_x ...
- 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 ...
- ndk编译android的lame库
1.lame c库: https://github.com/intervigilium/liblame 下载后解压,进入目录,terminal里运行ndk-build即可 2.lame android ...
- Unity3D Shader图像扭曲过场效果
把脚本挂在摄像机上 using UnityEngine; using System.Collections; [RequireComponent(typeof(Camera))] public cla ...
- PCB 铺铜 转载
所谓覆铜,就是将PCB上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜.敷铜的意义在于,减小地线阻抗,提高抗干扰能力:降低压降,提高电源效率:还有,与地线相连,减小环路面积.如果PCB的地 ...
- 【BZOJ3774】最优选择 最小割
[BZOJ3774]最优选择 Description 小N手上有一个N*M的方格图,控制某一个点要付出Aij的代价,然后某个点如果被控制了,或者他周围的所有点(上下左右)都被控制了,那么他就算是被选择 ...