我有一個現有的應用程序,通過排隊的傳輸將消息從一個進程發送到另一個進程。我希望通過延遲處理消息來處理消息的處理方式,並讓隊列充當優先級隊列,而消息應該首先在隊列頂部執行。延遲調用消息隊列?
IE:
在時間0消息A被髮送到隊列爲15分鐘的延遲。 5分鐘後,消息B被延遲10分鐘發送到隊列。 處理隊列的服務會崩潰並且在15分鐘內不會重新啓動。 當隊列再次開始處理時,消息B將位於頂部,然後是消息A.
在C#/ MSMQ/.NET生態系統中是否有類似的東西?
我有一個現有的應用程序,通過排隊的傳輸將消息從一個進程發送到另一個進程。我希望通過延遲處理消息來處理消息的處理方式,並讓隊列充當優先級隊列,而消息應該首先在隊列頂部執行。延遲調用消息隊列?
IE:
在時間0消息A被髮送到隊列爲15分鐘的延遲。 5分鐘後,消息B被延遲10分鐘發送到隊列。 處理隊列的服務會崩潰並且在15分鐘內不會重新啓動。 當隊列再次開始處理時,消息B將位於頂部,然後是消息A.
在C#/ MSMQ/.NET生態系統中是否有類似的東西?
如果您在Windows Azure上進行雲編程,有一種方法可以解決這個問題。只需指定visibilitytimeout
即可放置消息。
從http://msdn.microsoft.com/en-us/library/windowsazure/dd179346.aspx:
visibilitytimeout =
可選。如果指定,請求必須使用2011-08-18或更新版本的x-ms版本。如果未指定,則默認值爲0.指定相對於服務器時間的新可見性超時值(以秒爲單位)。新值必須大於或等於0,並且不能大於7天。消息的可見性超時不能設置爲晚於到期時間的值。 visibilitytimeout應設置爲小於生存時間值的值。
可選可見性超時指定消息將不可見的時間。超時過期後,該消息將變爲可見。如果未指定可見性超時,則使用默認值0。
MSMQ消息在發送時可以被賦予優先級,這在接收時很有用。 http://stackoverflow.com/questions/1310414/getting-message-by-priority-from-msmq –
Erm如果它沒有崩潰,消息A會先得到處理嗎? –
我不只是想要一個優先權,我基本上想要做一個模擬。此消息將不會被處理30分鐘,如果沒有其他優先級更高的消息可用,則不會立即處理該消息。 –