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相关的文章,希望能给有需要的人带来一点帮助吧,水平有限再加上初次动手,写得不好还请多多包含!废话不多说了直接进入正题. ...
随机推荐
- STL——仿函数(函数对象)
一.仿函数(也叫函数对象)概观 仿函数的作用主要在哪里?从第6章可以看出,STL所提供的各种算法,往往有两个版本,其中一个版本表现出最常用(或最直观)的某种运算,第二个版本则表现出最泛化的演算流程,允 ...
- 【LeetCode OJ】Add Two Numbers
题目:You are given two linked lists representing two non-negative numbers. The digits are stored in re ...
- Windows平台JDK8下载和安装说明
本页介绍如何安装和卸载Windows的JDK 8. 该页面包含以下主题: “系统要求” “安装说明符号” “安装说明” “卸载JDK” “已安装的目录树” “安装疑难解答” 有关安装JDK 8和JRE ...
- linux禁止IPv6
1. 禁止加载IPv6模块 # echo "install ipv6 /bin/true" > /etc/modprobe.d/disable-ipv6.conf 每当系统需 ...
- Material Design系列第三篇——Using the Material Theme
Using the Material Theme This lesson teaches you to Customize the Color Palette Customize the Status ...
- 【Python3】 使用django 2.0 + python3.6.4 创建应用
python版本:3.6.4 django版本:2.0 1 创建应用 输入命令 python manage.py startapp blog 2 在项目目录创建 templates文件夹 用于存放我们 ...
- 题目1458:汉诺塔III(不一样的汉诺塔递归算法)
题目链接:http://ac.jobdu.com/problem.php?pid=1458 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- Ubuntu 12.04 Openstack Essex 安装(单节点)
这是陈沙克一篇非常好的博文,当时在进行openstack排错的时候,多亏了这篇文章里面有些内容 帮我找到了问题的所在: 原文:http://www.chenshake.com/ubuntu-12-04 ...
- 理解proc目录与linux进程、ps命令、netstat命令的关系
零.proc目录简介 proc目录是虚拟文件系统(VFS)的一种实现,保存了进程信息(pid目录)和一些系统信息. 一.系统的信息 1.cpuinfo和meminfo两个文件 查看CPU和内存相关信息 ...
- 【CF870F】Paths 分类讨论+数学
[CF870F]Paths 题意:一张n个点的图,对于点i,j(i!=j),如果gcd(i,j)!=1,则i到j有一条长度为1的无向边.令dis(i,j)表示从i到j的最短路,如果i无法到j,则dis ...