2009-03-27 6 views
6

Ho implementato un sistema in C# che utilizza Microsoft Message Queue (System.Messaging) per la comunicazione tra processi correlati. In sostanza, un numero di servizi Sender genera messaggi da inserire nella coda e un numero di processori Receiver controlla le code e li cattura quando arrivano.Microsoft Message Queue - contrassegno priorità o una coda separata?

Mi è stato appena detto che ci sono alcuni messaggi che avranno bisogno di priorità rispetto ad altri.

È probabile che i messaggi arrivino a ondate e potrebbero esserci potenzialmente occasioni in cui un numero molto elevato di messaggi viene messo in coda in un solo colpo (circa un migliaio), quindi potrebbe esserci un ritardo prima della fine il messaggio viene elaborato.

mio pensiero originale era quello di avere un secondo priorità coda di messaggi che è guardato anche da ciascuno dei ricevitore processi in un thread diverso. Ci sarebbero molti meno messaggi in questa coda, quindi ci sarebbe meno ritardo.

Quindi mi sono imbattuto nella proprietà Message.Priority.

Quindi:

dovrei usare questo flag di priorità piuttosto che attuare un'altra coda? Saltare con successo ed efficienza questi messaggi prima del resto? In tal caso, quali sono le condizioni e gli eventuali effetti collaterali eventualmente presenti?

Oppure devo attenermi al piano originale e implementare un'altra coda per i messaggi prioritari?

risposta

5

Devo utilizzare questo flag di priorità piuttosto che implementare un'altra coda? .

Salterà con successo e in modo efficiente questi messaggi prima del resto? .

In tal caso, quali sono le condizioni e gli eventuali effetti collaterali eventualmente presenti? Nessuno, MSMQ è stato progettato per funzionare in questo modo.

+0

Bello, grazie. Ero preoccupato che potessero esserci dei trucchi nella periferia. – Damovisa