我有一個web應用程序,併爲每個用戶(假設我將有大約5千用戶)我需要在一小時後提出通知(他是一個簡化的說明)。通知隊列的實現
我有主意下面這個方案:
- 的
<userId, Timer>
有無詞典(我想Threading.Timer
,也許其他?),並處理它們的事件。 - 有字典
<userId, Task>
並將每個任務的延續設置給我的處理程序。 - 有PriorityQueue的時候,應該提出通知,並在一個單一的線程處理它們(處理可以是異步或序列化)的所有時間。當隊列爲空時,處理停止,當一個項目被添加時,處理恢復(這將需要一些同步,但不是相當複雜)
哪種方法在性能方面可能更具可擴展性或更好?其他方法也受到讚賞。
謝謝。
你無法在內存中執行任何操作(例如Dictionary或Timer),因爲它無法在Web服務器重新啓動(例如部署)期間存活。 – mjwills
應用程序回收將被禁用。在部署時重置通知對我來說可以。 – steavy