【问题标题】:How send pending notifications that are newer than 24 hours not old on restart?如何在重新启动时发送超过 24 小时的未决通知?
【发布时间】:2019-11-28 13:39:48
【问题描述】:

需要修改通知,以便如果通知作业由于某种原因没有运行,那么当我们稍后再次启动它时,它只会发送比 24 小时新的待处理通知。原因是,当我们重新启动队列时,我们不希望任何人被旧通知淹没。它们对时间很敏感,因此如果我们错过了它们,只需在 24 小时后不再发送它们。

$this->dispatch(new SendOnboardingDocs($candidate));

【问题讨论】:

    标签: laravel laravel-5 notifications queue jobs


    【解决方案1】:

    您可以将retryUntil 方法添加到您的作业并将超时设置为24 小时...

    /**
     * Determine the time at which the job should timeout.
     *
     * @return \DateTime
     */
    public function retryUntil()
    {
         return now()->addHours(24);
    }
    

    【讨论】:

      【解决方案2】:

      我认为您可以在 SendOnboardingDocs 中检查您的通知时间戳,如果超过 24 小时,请跳过它并将您的任务从队列列表中删除

      【讨论】:

      • 这是将我的作业发送到队列的示例。目前他们已经在队列中。出于某种原因,我重新启动了队列,但作业处于待处理状态。我需要一种机制来确定它们对我来说已经过时了。
      • 这样你就可以删除所有按事件之前过期的任务,所以所有任务都不会进入工作laravel.com/docs/5.8/queues#job-events
      猜你喜欢
      • 2021-04-20
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多