2011-11-21 22 views
6

定義済みのMSMQに送信されたメッセージの優先度を変更する際に問題が発生しました。 私はメッセージの優先順位を設定するたびに、ここに私がやっているもののsnipetがあるキュー 内のメッセージの優先順位に影響を与えるように見えることはありません:MSMQでメッセージの優先度を変更するにはどうすればよいですか?

static public void QueueBatchItem(MessageQueue mq, MessageQueueTransaction msgTx, MessagePriority msgPriority) 
{ 
    using (System.Messaging.Message mm = new System.Messaging.Message()) 
    { 
     string messageLabel = Guid.NewGuid().ToString(); 
     System.Messaging.XmlMessageFormatter formatter = new XmlMessageFormatter(); 

     RunSimulationRequestDTO dto = new RunSimulationRequestDTO(); 
     dto.RetryCount = 0; 
     dto.BatchHeaderID = batchID; 
     dto.MSMQLabel = messageLabel; 

     mq.MessageReadPropertyFilter.Priority = true; 
     mm.Priority = msgPriority; 

     mm.Body = dto; 
     mm.Label = messageLabel; 
     mm.Formatter = formatter; 
     mq.Send(mm, msgTx); 

    } 
} 

私は、コードを通してデバッグする場合は、デフォルトの優先度は「通常でありますアイテムがキューに送信されると、優先度は「キューメッセージ」で0と表示されます。私はMessagePriority.Highまたは8つの可能な値のいずれかとして優先度を渡すことができ、優先度が決して変更されません。 ...私が見てきたいくつかの例は、すべてのものを示してきた私は、この中に行方不明です

Message mm = new Message(); 
mm.Priority = MessagePriority.High; 

などの基本的なを持っている私もと私のメインのコードの外ほんの少しのテストのアプリを試してみましたMSDNの例と優先度番号は決して変更されません。

ありがとうございました。

編集: 私はこれ、私が見ていた優先順位は簡単に1 AboveNormal

<ThreadManagersConfiguration DefaultSleepBetweenPolls="5000" DefaultMsmqServer="."> 
    <ThreadManagers> 
     <add DisplayName="BatchSimulationManager" 
      RequestMSMQ=".\Private$\BatchSimulationRequest" 
      ResponseMSMQ="" 
      FailedMSMQ=".\Private$\BatchSimulationFailure" 
      Priority="AboveNormal" 
      TransactionalMode="RollbackTransaction" 
      MaxThreads="16" 
      SleepTimeBetweenPolling="10000" 
      ProcessModel="BATCH"/> 
    </ThreadManagers> 
    </ThreadManagersConfiguration> 

queue

+0

これはアプリケーション専用のキューですか? – iandotkelly

+0

はい、プライベートキューです。 –

+0

あなたは間違いなくメッセージの優先度を見ていますが、キューの優先度は0ではありません。デフォルト値は0です – iandotkelly

答えて

4

に設定することで、スレッドから来ていなかったことを確認しました:

「なぜトランザクションメッセージはすべて同じ優先順位ですか」

http://geekswithblogs.net/Plumbersmate/archive/2011/02/03/ldquowhy-do-transactional-messages-all-have-the-same-priorityrdquo.aspx

+0

ありがとう。私は、問題をメッセージ/待ち行列タイプに関連付けることはありません。アプリケーションは非トランザクションとして動作しないので、私は何をする必要があるかを行う別の方法を見つける必要があると思います。 –

関連する問題