![](/img/trans.png)
[英]How to identify if a private message queue (MSMQ) has exceeded its message storage limit using C#?
[英]Using C# how to clean up MSMQ message format to work with C++ IXMLDOMDocument2
我正在嘗試獲取C ++服務,以從C#生成的MSMQ消息中加載XML文檔。 我真的不能改變C ++的一面,因為我試圖將測試消息注入隊列。 C ++服務正在使用以下內容加載XML。
CComPtr<IXMLDOMDocument2> spDOM;
CComPtr<IXMLDOMNode> spNode;
CComBSTR bstrVal;
if(_FAILED(hr = spDOM.CoCreateInstance(CLSID_DOMDocument30)))
{
g_infoLog->LogCOMError(hr, "CWorker::ProcessBody() Can't Create DOM");
pWork->m_nFailure = WORKFAIL_BADXML;
goto Exit;
}
hr = spDOM->loadXML(bstrBody, &vbResult);
發送MSMQ消息的C#代碼如下所示(只是測試代碼不太漂亮):
// open the queue
var mq = new MessageQueue(destinationQueue)
{
// store message on disk at all intermediaries
DefaultPropertiesToSend = { Recoverable = true },
// set the formatter to Binary, default is XML
Formatter = new BinaryMessageFormatter()
};
// send message
mq.Send(messageContent, "TestMessage");
mq.Close();
我嘗試使用BinaryMessageFormatter發送相同的消息,但是在XML啟動之前,它將我認為是Unicode字符的內容放在頂部。
.....ÿÿÿ............. ......À)
如果我使用默認的XML格式化程序,則該消息具有以下頂部元素。 C ++服務似乎無法處理此問題。
<?xml version="1 .0"?>..<string>& lt;
您知道使用二進制格式化程序時可以輕松清理Unicode字符的方法嗎? 如果是這樣,我認為這可能會起作用。
您是否嘗試過ActiveXMessageFormatter ? 它可能無法與它一起作為格式化程序進行編譯,我無法在此處進行測試,但可能會進行測試。
編輯:只是嘗試過,它可以編譯確定,結果是否更好,我仍然不能確定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.