我们开发了一个组件,用于向 msmq 队列发送和读取大型消息,以便与 Biztalk 通信,如本 MSDN 文章中所述:http: //msdn.microsoft.com/en-us/library/aa560386.aspx
简单解释一下,您使用 PROPID_M_EXTENSION 字段来描述使用以下内容的消息部分:
定义它是多部分消息的 GUID (16b) 消息的 GUID (16b) 整个消息的总大小 (4b) 当前部分编号 (2b) 消息部分的数量 (2b) 这与 Biztalk 2006 完美配合,但是对于较新的版本(2010/2013),它根本不起作用。
我们已经从 Biztalk 2013 将大消息发送到队列并分析了该字段,似乎 PROPID_M_EXTENSION 的内容是:
定义它是多部分消息的 GUID (16b) 消息的 GUID (16b) 部分编号 (2b) 空数据 (2b) 如果是最后一部分,则为 1,否则为 0 (1b) 3 个未知字节 问题是最后三个字节,我们无法弄清楚其目的和如何计算。
这些值因消息内容和大小而异。感觉就像某种校验和,但我们需要能够手动设置它。
有任何想法吗?网络上关于这方面的信息很少?
现有的 mqlarge-dll 是本机代码,只能反编译为汇编程序,这(至少对我而言)很难调试。
一种解决方法是在我们的项目中包含对 mqlarge 的引用并使用现有程序集,但我们宁愿拥有自己的代码而不依赖于 dll。而且它让我不知道它是如何工作的:)