msmq大消息发送与接收

msmq大消息发送与接收

ID:8820989

大小:15.32 KB

页数:2页

时间:2018-04-08

msmq大消息发送与接收_第1页
msmq大消息发送与接收_第2页
资源描述:

《msmq大消息发送与接收》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、MSMQ大消息发送与接收(大于4M)2010-11-2211:17      前断日子在网上狗了下大消息发送与接收的时候,发现这方面接收的比较少,经过一段时间的学习,现把学习成果和大家分享下。(基于biztalk)由于MSMQ是微软提供的免费的消息中间件,但是其只可以接收4M以下的消息,大于4M的消息就接收不了(强烈希望微软人道点,让MSMQ能接收100M这样消息),网上也有不少文章通过修改注册表来扩大消息容量,但是经测试感觉不稳定,在实际的项目中使用风险太大。还好微软在Biztalk工具中提供了大消息发送接口,并带了个很好的

2、例子(在安装好的biztalk目录中找到SDKSamplesAdaptersUsageMSMQLarge路径中)不过需要注意消息队列的路径和正常的消息路径不一样,正确为:DIRECT=TCP:192.168.8.44private$TEST(前面FormatName)。但是他没有提供MSMQ消息接收大消息的示例和接口,一开始的时候,我手动组包,即根据“消息ID”后部分来组包(ID前部分一直的时候,如果后部分连续,则认为是同一个报文),最后批量发送大消息测试才发这方式行不通。不过突然想到,微软既然自己能发送肯定它也能收

3、,于是我又到biztalk安装目录中寻找蛛丝马迹,果然功夫不负有心人,在biztalk主目录中找到了Microsoft.BizTalk.Adapter.MSMQ.Msmq开头的程序集,心中不免一喜。新建一项目加入Microsoft.BizTalk.Adapter.MSMQ.MsmqLargeMessageWrapper.dll,测试果然可以接收大消息了!代码如下(

4、TEST"/>):MessageQueuemessageQueue=newMessageQueue(config.MqPathReceive);        MQRTLargeWrapperwrapper=newMQRTLargeWrapper();ManagedLargeMessagelargeMessage=null;try{largeMessage=wrapper.Receive(timeOut,messageQueue.ReadHandle,refmsgSize,IntPtr.Zero);}finally{messa

5、geQueue.Close();}包装类中也包括了发送接口。到网上一查才知道这东西也太贵了,30多万啊!还是想办法让它脱离biztalk比较好点,于是通过反编译工具,找到包装类引用了哪些程序集,就是Microsoft.BizTalk.Tracing.dll比较难搞,反编译显示在“全局程序集缓存”中,进去一看才知道没有dll的实际路径的,郁闷!那就搜索biztalk的安装目录吧,没有,那可能放到系统盘了,那就继续吧搜windows目录和ProgramFiles目录,也没有,超郁闷!不过还好,最好在安装包中找到了这个程序集。一切具

6、备,把测试程序拷贝到没有biztalk的环境下,还真的很好用(把mqrtlarge.dll放入到bin目录中,否则发送会出异常!)。整理下,发送和接收大消息所需程序集有:1、mqrtlarge.dll(区分32和64位系统)2、LargeMessages.dll(如果发送也是用包装类的话,则此文件可以应该可以不要,未测试)3、Microsoft.BizTalk.Streaming.dll4、Microsoft.BizTalk.Tracing.dll5、Microsoft.BizTalk.Adapter.MSMQ.MsmqAda

7、pterCommon.dll6、Microsoft.BizTalk.Adapter.MSMQ.MsmqLargeMessageWrapper.dll

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。