Rails/Postgres - 我需要什么类型的数据库锁?

Rails/Postgres - What type of DB lock do I need?

我有一个 PendingEmail table,我将许多记录推送到其中以获取我要发送的电子邮件。

然后我有多个 Que 工作人员处理我的应用程序的工作。其中一份工作是我的 SendEmailJob.

这项工作的目的是检查 PendingEmail,提取 priority 订购的最新 500 个,向我的第 3 方电子邮件提供商发出批量请求,等待所有 500 个响应的数组响应, 然后删除成功的项目并标记失败记录的 error 列。单个作业将以这种方式继续,直到从 DB 返回的记录为 0,并且作业将 exit/destroy.

问题是:

我在想什么...

只是不知道选择哪种类型的锁,是在Rails中做还是直接在数据库中做。它们中有很多具有如此细微的差异(我使用的是 PG)。任何见解将不胜感激!

答案:我需要 advisory lock