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相关的文章,希望能给有需要的人带来一点帮助吧,水平有限再加上初次动手,写得不好还请多多包含!废话不多说了直接进入正题. ...
随机推荐
- 《Lua程序设计》第1章 开始 学习笔记
1.1 程序块(chunk)每段代码(例如一个源代码文件或在交互模式中输入的一行代码),称为一个程序块.若使用命令行参数-i来启动Lua解释器,那么解释器就会在运行完指定程序块后进入交互模式.dofi ...
- SpringMVC系列之URL匹配问题
一.工程目录 二.web.xml配置文件及与其他文件的关系 三.控制器部分 四.返回值 五.url前后缀 六.项目源代码 http://files.cnblogs.com/files/xujian20 ...
- JS 省市县三级联动
$(".area").change(function(ent,arg){ var $this = $(this), level = $(this).attr("id&qu ...
- Windows 7笔记本创建wifi热点供手机上网教程
Windows 7笔记本创建wifi热点供手机上网教程 | 浏览:60606 | 更新:2012-07-19 11:48 | 标签:笔记本 wifi 1 2 3 4 5 6 7 分步阅读 用智能手机的 ...
- 【PHP】常见算法
1 冒泡排序 思路:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒. 即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它 ...
- 【线程】Thread中的join介绍
因为sleep.wait.join等阻塞,可以使用interrupted exception异常唤醒. 一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行 ...
- cmake编译android平台的libPoco
1.下载源代码,解压到POCO-1.7.8-ALL 2.从$ANDROID_NDK\cmake下复制android.toolchain.cmake AndroidNdkGdb.cmake Androi ...
- C语言程序设计--字符串与指针及数组与指针
数组的基本知识 数组的定义 #define SIZE 5 int array_int[5]; //未声明初始化,默认填零 float array_float[5] = {1.01, 2.23, 3.1 ...
- 使用iLO远程管理HP系列服务器
iLO是Integrated Ligths-out的简称,是HP服务器上集成的远程管理端口,它是一组芯片内部集成vxworks嵌入式操作系统,通过一个标准RJ45接口连接到工作环境的交换机.只要将服务 ...
- php intval的取值范围:与操作系统相关
php intval的取值范围:与操作系统相关,32位系统上为-2147483648到2147483647,64位系统上为-9223372036854775808到922337203685477580 ...