在webapp中实现通知

时间:2010-09-22 22:49:00

标签: java web-applications tomcat

我们正在开发和Web应用程序,允许用户注册某些事件。该应用程序应该做的是向他们发送一些通知,以提醒他们已注册。将有超过1k的用户可以在很宽的时间范围内注册许多活动。我们必须发送3个月,1个月,1周和活动前一天的通知。

首先,我必须确定是否需要向特定用户发送通知 我正在考虑将迭代注册并确定是否需要发送通知的线程。如果需要通知,我是应该立即执行还是将所有需要它的对象放在某种缓存中然后发送它们(通过另一个线程)?

第二件事是:如果我创建了该线程 - 最好将它放在应用程序旁边运行,将该线程嵌入到应用程序中,例如,在上下文侦听器中启动它?

你将如何解决这个问题?也许有更好的方法?

2 个答案:

答案 0 :(得分:2)

我不会为此生成我自己的线程,我会使用像Quartz这样的调度程序,并运行每日或每小时的工作(我不知道你需要什么样的粒度):

  1. 在1天,1周,1个月,3个月以及应该收到相关通知的用户中查找即将发生的事件。
  2. 创建通知并发送
  3. 我可能会实现使用单独的作业(发送通知是一个不同的问题),从而排队第一部分的结果,这将为您提供更大的灵活性。第一部分可以通过使用不同时间范围参数(1天,1周,1个月,3个月)安排的独特工作来完成。

答案 1 :(得分:1)

布置有关如何在识别通知后安排通知的问题,我建议循环播放即将发生的事件,而不是所有用户。您似乎很可能拥有比事件更多的用户(特别是如果您将扫描限制为将来恰好发生1周,1个月和3个月的事件)。

就通知而言,我认为首先发送标记通知,然后处理所有标记的通知将比在扫描过程中发送通知更加优化。如果您要发送通知队列,则可以在同一时间向每个受影响的用户发送一封包含多个事件的电子邮件。