[原创]在msmq3.0中使用http协议发送消息

简介: 1.先声明: msmq3.0仅在winxp和win2003以上系统支持,如果windows vista系统,据说已经开始支持msmq4.0了 2.为什么要使用http协议发送消息 访问internet远程发送消息时,msmq2.

1.先声明:
msmq3.0仅在winxp和win2003以上系统支持,如果windows vista系统,据说已经开始支持msmq4.0了

2.为什么要使用http协议发送消息
访问internet远程发送消息时,msmq2.0以上就已经开始支持tcp方式了,但是如果外网的服务器与发送端之间有防火墙或其它网络设备隔离,或者服务器上的tcp所需要的端口未开放,tcp方式将无法发送,而http协议使用的是默认的80端口,一般服务器都会开放这一端口,另外只有http协议可以穿透防火墙

3.msmq3.0的安装问题
在windows xp上安装消息队列时,默认情况下msmq已经安装了http协议支持,而windows2003上,默认安装的消息队列是没有http支持的,需要在"添加/删除 windows组件"-->"应用程序服务器"-->"消息队列"-->"详细信息"中把"MSMQ http支持"勾中

另外要说明的是msmq3.0在安装过程中,需要在iis的默认站点(即标识为W3WVC1,msmq在安装中定死了这一标识)中创建msmq的虚拟目录,如果你不幸把iis的默认站点删除了,就无法正确安装msmq3.0的http支持(既使你再新建一个默认站点也没用,因为新建的站点,其内部元数据标识是随机生成的,不是W3WVC1),会提供以下错误:  /LM/W3Svc/1/Root/MSMQ 找不到之类

解决办法:
(a)把iis卸载掉,重新安装iis,当然重安装iis后,很多iis的站点信息也将丢失
(b)修改iis元数据
先到http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&DisplayLang=en 这里下载一个Internet Information Services (IIS) 6.0 Resource Kit Tools 安装后运行

程序-->IIS Resources--> Metabase Explorer --> Metabase Explorer

展开/LM/W3SVC/节点,找到你当前的默认站点标识名(技巧:在iis管理中,右击默认站点-->属性-->网站-->属性-->在弹出对话框最下面的日志文件名W3SVC1529656452\exyymmdd.log,这里的1529656452就是内部标识)

修改以下几个地方:
先把这个标识rename为1,再修改这个节点下面的root以及虚拟目录的AppRoot,即把类似/LM/W3SVC/1529656452/Root 修改为/LM/W3SVC/1/Root

保存,然后重启iis服务,就能正常安装msmq3.0的http支持了(这个技巧我搜索遍了google,baidu也没找到,最终自己尝试发现的!)

4.发送代码示例:
代码其实很简单

MessageQueue mq  =   new  MessageQueue( " FormatName:DIRECT=http://172.134.54.4/msmq/Private$/demo " );
System.Messaging.Message msg 
=   new  System.Messaging.Message();
msg.Body 
=   " Hello World! "   +  DateTime.Now.ToString();
msg.Formatter 
=   new  System.Messaging.XmlMessageFormatter( new  Type[]  typeof(string) } );
mq.Send(msg); 

 

如果172.134.54.4这台服务器是直接对外公开访问的,以上代码就可以将消息正常发送到该服务器的专用队列demo上

5.如何穿透防火墙,路由等障碍
微软有一篇专门文章讲解这个,主要是设置服务器端的C:\WINDOWS\system32\msmq\mapping\sample_map.xml这个文件,详情可参见:
http://www.microsoft.com/china/windowsserver2003/techinfo/overview/msmqb2b.mspx

最后特别感谢我的网友yongfeng,在调试过程中是他给我很多帮助。

注:转载请注意文章出处

菩提树下的杨过(http://blog.sqlsky.com/)整理

目录
相关文章
|
3天前
|
安全 网络协议 网络安全
干货|代理IP协议有何区别?深入了解 SOCKS5、HTTP 代理
HTTP和HTTPS是互联网主要的两大协议,HTTP是基础的简单请求-响应协议,常用于TCP上,但数据传输不安全。HTTPS是HTTP的安全版本,添加了SSL层进行加密和身份验证,提供更高的安全性,用于保护数据和验证网站真实性。HTTPS需CA证书,可能产生费用,并使用443端口而非HTTP的80端口。
|
3天前
|
网络协议 安全 数据安全/隐私保护
干货|代理IP协议有何区别?深入了解 SOCKS5、HTTP 代理
SOCKS5和HTTP是两种代理协议,前者是通用型,支持多种网络流量,提供身份验证、IPv6支持及UDP兼容性,更适合实时数据传输。HTTP代理专用于HTTP协议,适用于Web资源请求。SOCKS5在传输方式、功能、兼容性和安全性上更胜一筹,而HTTP代理则在处理HTTP请求时更专业。选择代理协议应根据需求和应用场景,考虑服务的稳定性和安全性。付费代理如kookeey全球代理,支持双协议,速度快且可扩展性强,是可靠的选择。
|
4天前
|
数据采集 网络协议 安全
2024年,你还在等什么?一起探索HTTP协议的奥秘!
2024年,你还在等什么?一起探索HTTP协议的奥秘!
|
4天前
|
网络协议 Java 应用服务中间件
HTTP协议与Tomcat在IJ中配置
本文是对自己学习JavaWeb学习的笔记的总结,添加了一些自己的东西,然后进行一次复盘,并加深一下学习的理解和印象.其中内容主要包括对http协议的详细介绍,java常见服务器的初步介绍,以及IJ旧版和新版的tomcat服务器的配置图解教程
|
4天前
|
存储 网络协议 JavaScript
应用层 HTTP协议(1)
应用层 HTTP协议(1)
7 0
|
5天前
|
缓存 安全 Linux
【探索Linux】P.33(HTTP协议)
【探索Linux】P.33(HTTP协议)
30 7
|
6天前
|
存储 算法 安全
[计算机网络]---Https协议
[计算机网络]---Https协议
|
6天前
|
存储 缓存 网络协议
[计算机网络]---Http协议
[计算机网络]---Http协议
|
12天前
|
前端开发 API 网络架构
RESTful接口与http协议状态表述
该文介绍了RESTful风格API的好处和设计原则。RESTful API以资源为中心,通过HTTP方法(GET, POST, PUT, DELETE)表示操作,利用状态码反馈操作结果。它简化了客户端与服务端的交互,提供了一种通用规范,减少沟通成本。设计要点包括:URI描述资源,HTTP方法体现操作,使用标准HTTP状态码,GET不改变数据,使用复数名词,支持复杂资源关系,可选实现HATEOAS,以及接口版本管理。
|
13天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的