2011-01-26 9 views
2

キューからメッセージを直接文字列として読み取ることはできますか?コンピュータからMSMQメッセージを見たときに表示されるのと同じメッセージ本文管理MSCスナップイン)、私は自分自身をデータベースに保存することができますか?データを失うことなく後で再生できるように格納したいと思っています。デシリアライズ/シリアル化すれば何かを失うかもしれないと心配しています。メッセージ本体の文字列としてMSMQメッセージオブジェクトをキューから読み取る方法

+0

メッセージ本文なしその他のメッセージプロパティを保存するだけに関心がありますか? –

+0

キューのすべてのメッセージを傍受してメッセージ本文のコピーを取得し、それ以外の場合はメッセージを変更しないままにしますか? – Filburt

答えて

3

はこれを試してください。..

string QueueName = @".\private$\publishingQueue"; 

//note, you cannot use method exists on remote queues 

if (MessageQueue.Exists(QueueName)) 
{ 

var queue = new MessageQueue(queueInfo.QueueName) 
{ 
MessageReadPropertyFilter = new MessagePropertyFilter 
{ 
     ArrivedTime = true, 
     Body = true 
    } 
}; 


var messages = queue.GetAllMessages(); 
var m = messages[0]; 
m.Formatter = new System.Messaging.XmlMessageFormatter(new String[] {}); 

StreamReader sr = new StreamReader(m.BodyStream); 

string ms = ""; 
string line; 

while (sr.Peek() >= 0) 
{ 
     ms += sr.ReadLine(); 
} 

//ms now contains the message  
} 
関連する問題