【问题标题】:Strategy for sending delayed pushes发送延迟推送的策略
【发布时间】:2017-09-19 18:07:30
【问题描述】:

我的应用程序应该根据一些间隔模式通知用户,例如:

Event
    > Pushes
            Pattern: Immediately - 3 day - 7 day - 12 day

如果用户为事件推送采取了行动,则应停止该事件。可能有多个相同类型的事件应该在事件发生时发送推送。
此外,我不想打扰用户,例如当一个有 5 个事件要发送 x5 更多推送时,但通过发送一个推送例如“提醒:你有5 场活动。

所以现在我决定采用这种解决方案,当事件发生时,将所有应该稍后发送的事件推送插入到数据库中,并使用 datetime 进行发送。如果用户采取行动,则推送标记作为此事件的冗余。例如,在发送分析间隔之前,将所有推送用于下一个 24 小时,发送一个并将所有其他推送标记为已发送。

可以吗,或者可能存在更好的解决方案?

【问题讨论】:

    标签: push-notification architecture software-design


    【解决方案1】:

    我有与您构建相同应用程序的经验。我正在做的是:

    CMS -> redis -> 工人

    • CMS,用于创建推送通知内容,包括该内容的发送时间
    • Redis,用于存储延迟作业数据
    • Worker,从 Redis 中提取延迟作业数据的 php 应用程序。我在这里使用 Laravel,我利用 Laravel queue delayed dispatching 的优势。

    以前我曾尝试使用数据库和消息代理SQS 作为队列驱动程序。为什么我要切换到 redis ?首先,当我使用数据库时,成本太高,因为我的队列数据流量非常巨大。然后当我使用 SQS 时,它比数据库好,但 SQS 无法保存数周龄的延迟数据。所以我最后的选择是Redis。当然我们可以使用其他服务,例如Rabbitmq

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      相关资源
      最近更新 更多