定義済みの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>
これはアプリケーション専用のキューですか? – iandotkelly
はい、プライベートキューです。 –
あなたは間違いなくメッセージの優先度を見ていますが、キューの優先度は0ではありません。デフォルト値は0です – iandotkelly