我使用appengine(java)作为移动应用程序(android)的后端。我的应用程序的用户可以创建由标题和日期/时间组成的公共事件。这些事件存储在我的appengine后端。任何用户都可以订阅活动,并在活动开始时收到推送通知。
所以我想安排一个关于appengine的工作/任务,以便在事件日期/时间运行,向所有订阅者发送推送通知。
实施例: 用户A创建一个将于下周六晚上8点开始的活动。用户B和用户B订阅此活动。 在星期六晚上8点,作业/任务应该开始向用户B和用户C发送推送通知,以通知事件已经开始。
我的问题是: 如何以有效的方式在appengine上实现这样的东西?我想说,星期六晚上8点开始参加活动。有Cronjobs和TaskQueues。无法以编程方式创建Cronjobs。需要拉出TaskQueue,并且不能安排在给定的日期/时间拉,对吧? 因此,我看到的唯一解决方案是创建一个每分钟运行一次的cronjob,以检查是否有一个事件现在就开始。
可以在一周中的任何时间和任何一天创建活动。但是,大多数事件都是为周末创建的,有些日子没有创建任何事件。因此,定期运行cronjob是非常低效的。我正在寻找一个更智能的解决方案,任何想法?
答案 0 :(得分:3)
实际上,根据您的描述,解决方案是创建一个cron作业,检查现在开始的新事件。
但是,您应该注意不要超过每个cron作业的10分钟窗口。如果你有很多事件,你可能应该使用推送任务队列将实际处理从cron作业移到后台任务。
您可以查看this帖子,了解cron作业和任务队列的组合。