我有一个PendingEmail
表,我将许多记录推送到我要发送的电子邮件中。
然后我有多个Que工作人员处理我的应用程序的工作。其中一项工作是SendEmailJob
。
这项工作的目的是检查PendingEmail
,提取priority
订购的最新500,向我的第三方电子邮件提供商发出批量请求,等待所有500个响应的阵列响应,然后删除成功的项目并标记失败的记录' error
列。单个作业将以这种方式继续,直到从DB返回的记录为0,作业将退出/销毁。
问题是:
SendEmailJob
处理电子邮件至关重要。SendEmailJob
未运行,我需要每秒检查一次数据库。如果它正在运行,那么没有问题,因为该作业将在~3秒内到达。我在想什么......
SendEmailJob
可以同时运行,只要它们在有锁定的情况下提前中止。我只是不知道选择哪种类型的锁,无论是在Rails中还是在数据库中直接执行。他们中有很多人有这么微妙的差异(我使用的是PG)。任何见解将不胜感激!