2011-11-21 35 views
6

Tôi đang gặp sự cố khi thay đổi mức ưu tiên của thư được gửi tới MSMQ đã xác định. Bất cứ khi nào tôi đặt tin nhắn ưu tiên nó không bao giờ dường như ảnh hưởng đến ưu tiên của thông điệp trong hàng đợi Đây là một snipet về những gì tôi đang làm:Làm cách nào để thay đổi mức ưu tiên của thư trong 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); 

    } 
} 

Nếu tôi gỡ lỗi qua mã ưu tiên mặc định là 'Bình thường 'và khi một mục được gửi đến hàng đợi, mức độ ưu tiên hiển thị là 0 với' Thông báo xếp hàng '. Tôi có thể vượt qua các ưu tiên như MessagePriority.High hoặc bất kỳ trong 8 giá trị có thể và nó không bao giờ thay đổi ưu tiên là gì.

tôi thiếu gì trong này ... vài ví dụ mà tôi đã nhìn thấy có tất cả mọi thứ hiện có cơ bản như

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

Tôi thậm chí đã cố gắng ứng dụng thử nghiệm chỉ ít bên ngoài của mã chính của tôi với các ví dụ MSDN và số ưu tiên không bao giờ thay đổi.

cảm ơn.

chỉnh sửa: tôi chắc chắn rằng các ưu tiên tôi đã nhìn thấy được không đến từ các chủ đề bằng cách thiết lập nó để 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

Đây có phải là hàng đợi riêng tư đối với đơn đăng ký của bạn không? – iandotkelly

+0

Có, đó là hàng đợi riêng tư. –

+0

Bạn chắc chắn đang xem xét mức độ ưu tiên của thư và không ưu tiên hàng đợi, có giá trị mặc định là 0 – iandotkelly

Trả lời

4

dễ dàng, tùy chọn này:

“Tại sao tất cả các tin nhắn giao dịch đều có cùng mức độ ưu tiên không? ”

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

+0

Cảm ơn bạn. Tôi không bao giờ liên kết vấn đề với loại tin nhắn/hàng đợi. Ứng dụng không hoạt động như không giao dịch vì vậy tôi đoán tôi cần phải tìm cách khác để làm những gì tôi cần làm. –

Các vấn đề liên quan