【问题标题】:Push notifications using Spring Boot使用 Spring Boot 推送通知
【发布时间】:2021-03-01 23:29:44
【问题描述】:

希望大家多多指教。

我有一个 Spring Boot API 和一个移动应用程序。我必须在用户必须做某事之前一小时向他们发送推送通知,比如提醒。我在数据库中存储了特定的日期和时间。

我一直在阅读计划任务,但我一点也不喜欢。

那么,您认为最好的方法是什么?

【问题讨论】:

    标签: java spring-boot push-notification


    【解决方案1】:

    我一直在阅读计划任务,但我一点也不喜欢。

    它还应该如何工作?您需要某种在指定时间触发您的代码的调度程序/计时器。

    你可以选择我想到的最简单的解决方案:

    long delay = ...; // calculate the delay when the code should be executed
    Runnable theCodeToExecute = () -> System.out.println("hello world");
    new Thread(() -> {
      try {
          Thread.sleep(delay);
          runnable.run();
      }
      catch (Exception e){
          System.err.println(e);
      }
    }).start();
    

    这当然有几个缺点:当你重新启动你的应用程序时,计划任务就消失了。当你有数百个线程处于休眠状态时,它不会很有效。

    当然有办法绕过这个:

    将您的计时器存储在数据库(或文件)中。并在您发送通知时删除条目。当您的应用程序重新启动时,您只需读取存储的条目并重新启动计时器。

    您可以使用任务队列(或排序列表)。并且有一个线程,每 N 秒查找一次队列中的下一个任务。如果此任务已准备就绪,请将其从队列(或列表)中移除并执行代码。


    作为替代方案,您当然可以使用已经为您完成所有这些工作的框架,例如 Quartz

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2015-09-23
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多