2011-01-26 12 views
6

送信キューをパージする方法はありますか。それは私がMMCのスナップインでそれを行うことができると私はコードでそれをパージしようとすると表示されません私はエラーFormat name is invalidそれはメッセージを送信しているコンピュータが存在しないので、キューはMSMQの最大ストレージスペースを埋めるので、アプリケーションが別のメッセージを送信しようとするたびにinsufficient resourcesの例外が発生します。

私は次の形式を試してみたし、彼らはすべての例外で失敗format name is invalid

DIRECT = OS:プライベートの$ \のQUEUENAME \ COMPUTER
OS:プライベートの$ \のQUEUENAME
COMPUTER民間の$ \のQUEUENAME \ \ COMPUTERMSMQ送信キューをパージする方法

+0

送信キューとは何ですか? – Andrey

+3

メッセージを送信したキューが、別のコンピュータに送信される前に保存されます。 – Brian

答えて

6

MMCスナップインから手動でパージできる必要があります。 MSMQはストレージ制限に達したときに非常にかわいくなるので、「許可が拒否されました」などの操作で多くの操作が失敗します。

明らかに、特定の使用パターンに十分な記憶領域があるように構成を変更することです。

編集:管理機能およびリモートキューに関連する管理対象APIの制限が発生している可能性があります。 Ingo Rammerによるthisの記事を見てください。 p-invokeの例も含まれています。 GetPrivateMqPathがある

using (var msgQueue = new MessageQueue(GetPrivateMqPath(queueName, remoteIP), QueueAccessMode.ReceiveAndAdmin)) 
{ 
    msgQueue.Purge(); 
} 

する:発信キューへ

if (!string.IsNullOrEmpty(remoteIP)) 
    return String.Format("FORMATNAME:DIRECT=TCP:{0}\\private$\\{1}", remoteIP, queueName); 
else 
    return @".\private$\" + queueName; 

QueueAccessMode.ReceiveAndAdminポイント

+1

+1いい記事がリンクされています。 – Filburt

+3

素敵な記事ですが、それを試してみませんでした。スクリーン上の画像の1つが、私が間違った笑いをしていたことを私に示したからです。私はキュー名を右クリックし、そこに表示するパージオプションを除いていました。より深く行き、右クリックして "キューメッセージ" – Brian

1

FORMATNAME:DIRECT=OS:computer\PRIVATE$\queuenameを試すことができます。

3

それが可能な用途発信キューをパージするためのコードを管理しています。

関連する問題