2012-05-26 82 views
1

我有一個現有的應用程序,通過排隊的傳輸將消息從一個進程發送到另一個進程。我希望通過延遲處理消息來處理消息的處理方式,並讓隊列充當優先級隊列,而消息應該首先在隊列頂部執行。延遲調用消息隊列?

IE:

在時間0消息A被髮送到隊列爲15分鐘的延遲。 5分鐘後,消息B被延遲10分鐘發送到隊列。 處理隊列的服務會崩潰並且在15分鐘內不會重新啓動。 當隊列再次開始處理時,消息B將位於頂部,然後是消息A.

在C#/ MSMQ/.NET生態系統中是否有類似的東西?

+0

MSMQ消息在發送時可以被賦予優先級,這在接收時很有用。 http://stackoverflow.com/questions/1310414/getting-message-by-priority-from-msmq –

+0

Erm如果它沒有崩潰,消息A會先得到處理嗎? –

+0

我不只是想要一個優先權,我基本上想要做一個模擬。此消息將不會被處理30分鐘,如果沒有其他優先級更高的消息可用,則不會立即處理該消息。 –

回答

1

如果您在Windows Azure上進行雲編程,有一種方法可以解決這個問題。只需指定visibilitytimeout即可放置消息。

http://msdn.microsoft.com/en-us/library/windowsazure/dd179346.aspx

visibilitytimeout =

可選。如果指定,請求必須使用2011-08-18或更新版本的x-ms版本。如果未指定,則默認值爲0.指定相對於服務器時間的新可見性超時值(以秒爲單位)。新值必須大於或等於0,並且不能大於7天。消息的可見性超時不能設置爲晚於到期時間的值。 visibilitytimeout應設置爲小於生存時間值的值。

可選可見性超時指定消息將不可見的時間。超時過期後,該消息將變爲可見。如果未指定可見性超時,則使用默認值0。