2012-03-09 19 views
6

エラーキュー内のメッセージを編集できる必要があります(再キュー用に実際のキューに再送信できるようにする必要があります)。キュー内のMSMQメッセージを編集する

(私のメッセージはサポート担当者が容易に読むことができるように特定の書式が必要なので)独自のカスタムツールを作成したいと考えています。

アプリケーション「QueueExplorer」がこれを実行するため、これが可能であることはわかっています。

MSMQメッセージ(キューの最初のメッセージではない)をどのように読み込み、編集してキューに戻すことができるのか誰にでも分かりますか?あなたはその後、それぞれのメッセージを処理し、リストを反復することができます

List<Message> msgList = new List<Message>(); 

using (MessageEnumerator me = queue.GetMessageEnumerator2()) 
{ 
    while (me.MoveNext(new TimeSpan(0, 0, 0))) 
    { 
    Message message = me.Current; 
    msgList.Add(message) 
    } 
} 

:このようなものを使用してメッセージを通じて

+0

私は通常、QueueExplorerを購入していますが、私のメッセージを自分のユーザーにとって使いやすい方法でフォーマットすることはできません。また、メッセージを元のキューに戻す機能を統合する必要があります。最後に、QueueExplorerは非常に簡単な作業では非常に遅いです。 – Vaccano

+1

これはおそらくあまり一般的ではありませんが、QueueExplorerが.NETで書かれている場合(それは現れています)、デコンパイラを使って実行しているのはなぜですか? –

+0

@Vaccano QueueExplorer says *メッセージを読み込んだりコピーしたり、ドラッグ&ドロップしたり、メッセージを編集したりするとキューの最後に移動します*(http://www.cogin.com/mq/qelimitations.php参照)ので、基本的にメッセージを読み込みます編集後、オリジナルを削除し、編集したメッセージをエンキューします。あなたが後になっているのであれば、彼らは "現場編集"をしません。 – Yahia

答えて

3

反復、。 オリジナルに基づいて新しいメッセージを作成します。次に、既存のメッセージを削除し、新しいメッセージを追加します。

foreach (Message message in msgList) 
{ 
    //Create a new message as required, add it, then remove the old message 
    MessageQueue.ReceiveById(message.MessageId); 
} 
3

MSMQメッセージは不変であるはずです。あなたができることは、メッセージを読んで、編集したメッセージのコピーをキューに戻すことです。

関連する問題