我有一个web应用程序,并为每个用户(假设我将有大约5千用户)我需要在一小时后提出通知(他是一个简化的说明)。通知队列的实现
我有主意下面这个方案:
- 的
<userId, Timer>
有无词典(我想Threading.Timer
,也许其他?),并处理它们的事件。 - 有字典
<userId, Task>
并将每个任务的延续设置给我的处理程序。 - 有PriorityQueue的时候,应该提出通知,并在一个单一的线程处理它们(处理可以是异步或序列化)的所有时间。当队列为空时,处理停止,当一个项目被添加时,处理恢复(这将需要一些同步,但不是相当复杂)
哪种方法在性能方面可能更具可扩展性或更好?其他方法也受到赞赏。
谢谢。
你无法在内存中执行任何操作(例如Dictionary或Timer),因为它无法在Web服务器重新启动(例如部署)期间存活。 – mjwills
应用程序回收将被禁用。在部署时重置通知对我来说可以。 – steavy