前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[原创]在msmq3.0中使用http协议发送消息

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

作者头像
菩提树下的杨过
发布2018-01-22 17:16:09
1.7K0
发布2018-01-22 17:16:09
举报
文章被收录于专栏:菩提树下的杨过

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.发送代码示例: 代码其实很简单

代码语言:javascript
复制
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/)整理

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-04-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档