【问题标题】:Rails: How to send (changing) http POST every n minutes?Rails:如何每 n 分钟发送(更改)http POST?
【发布时间】:2011-03-16 01:21:12
【问题描述】:

请帮帮我。

我需要将消息 http 发布到特定的 SMS 网关。所以,我有一个类似这样的表:

|     send_time     |  phone    |          msg          |
|2010-03-15 08:30:00|12125551234|'first message user A' |
|2010-03-15 09:30:00|12125551234|'secnd message user A' |
|2010-03-15 08:30:00|15145550000|'first message user B' |

每一个代表我构建http post请求需要的参数,需要发送到send_time(给或花几分钟)。

我目前每分钟都有一个 rake 任务,它检查数据库并相应地发送 POST。但这似乎是一种脆弱的方法。此外,这需要很好地扩展;我必须能够在一分钟内发送很多(比如说数千个)。

将如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails message-queue


    【解决方案1】:

    这种工作最好由后台工作人员完成。需要发送的每条短信都是具有给定时间运行的作业。

    delayed jobresque 都支持稍后发送(这在 resque 中还不是头等舱,但有示例),因此这两个都是此任务的不错选择。

    要达到这个规模,您需要添加更多的工作人员来使用消息。

    【讨论】:

    • 感谢您的回答 jonnii。所以我可以使用 DJ 来异步发送消息。我将如何在正确的时间对消息进行排队?我仍然坚持每分钟的 cron rake 吗?
    • 好的,你的答案,结合this one 应该可以工作。从 cron 调用 wgetcurl(而不是 rake 任务)。
    • 您可以使用 DJ 的稍后发送功能对它们进行排队。然后当 DJ 运行时,它会选择适用于 now 的作业。
    • 啊,更好!我看着 DJ,但不知何故从未注意到:run_at 选项。非常感谢乔尼!
    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    相关资源
    最近更新 更多