【问题标题】:Implementing notification in webapp在 webapp 中实现通知
【发布时间】:2010-09-22 22:48:59
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java web-applications tomcat


    【解决方案1】:

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

    1. 查找 1 天、1 周、1 个月、3 个月内即将发生的事件以及应收到通知的用户。
    2. 创建通知并发送它们

    我可能会使用单独的作业来实现这一点(发送通知是一个不同的问题),因此将第一部分的结果排队,这将为您提供更大的灵活性。第一部分可以通过具有不同时间框架参数(1 天、1 周、1 个月、3 个月)的独特作业来完成。

    【讨论】:

    • 可以添加或修改通知之间的时间间隔,因此我认为应该每 N 运行一个作业(其中 N 是最低间隔)。用户只能获得他当时有事件的信息。但我喜欢调度程序的方法——我什至不知道存在这样的服务;)
    • @jjczopek 还有一些其他选项可以安排 Java 作业,但如果您正在寻找具有故障转移等功能的强大解决方案,Quartz 绝对是您的最佳选择。
    【解决方案2】:

    提出关于如何在确定通知后安排通知的问题,我建议对即将发生的事件进行循环,而不是对所有用户进行循环。您的用户似乎很可能比事件多得多(特别是如果您将扫描限制在恰好在未来 1 周、1 个月和 3 个月内发生的事件)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多