我即将为我的Android应用程序构建一个具有Rails后端的Notification系统。每当有人对帖子发表评论时,我都想通知所有相关人员。
当然,我可以这样做:
def create
#Process commenting on the post
#Process sending notification to all involved
render :ok
end
话虽这么说,我不希望发送通知来减慢请求。最终,它并不决定是否创建帖子的命运。
我认为最好的解决方案可能是将任务添加到后台工作程序,后台工作程序会发送一组通知。是否有更好/不同的解决方案可用于此类事情?如何实施?
答案 0 :(得分:0)
我希望使用this Rails Guide中描述的ActiveJob
。您尝试做的事情以及ActionMailer
的工作方式非常相似;它只是你发送通知而不是电子邮件。您使用回调将通知作业排队的方式与新用户注册时发送电子邮件的方式相同,如the ActionMailer Basics Guide的第2.1.4节所述。
答案 1 :(得分:0)
我会做以下事情:
after_commit :notify_others, on: :create
notify_others
方法应该使用刚创建的评论调用作业(NewCommentNotifierJob
)NewCommentNotifierJob
的执行方法中,使用评论确定应接收电子邮件通知并安排电子邮件发送的所有相关方因此,对于每个新评论,您将安排1个作业,该作业将安排N个作业发送电子邮件通知。