我不知道竞争条件是否是最好的词,但我找不到更好的词。
在某些情况下,我会向我的应用程序的管理员发送邮件。然后,他们可以登录,验证某些数据,然后自动向应用程序的所有用户发送电子邮件。如何防止两个或多个管理员登录并按下发送按钮的情况?我只希望在这种情况下发送一次邮件。
答案 0 :(得分:4)
我会说named tasks。单击按钮时将任务添加到队列中,但请确保两种情况下的名称都能防止重复(例如,您可以使用今天的日期或常量命名)。
因此,如果任务已经在队列中,您将发现......然后您可以选择要采取的操作。您的处理程序还可以记录此邮件已由管理员操作,并在其登录时告知其他管理员。
答案 1 :(得分:2)
可能最好的是按下发送按钮不会发送电子邮件,它只是将任务添加到任务队列。然后,该任务的处理程序确保消息仅发送一次(并且它可以通过重新排队任务重试发送消息,或者它可以批量发送电子邮件,一次只发送给有限数量的收件人,无论多长时间,最终采取。)
如果您的应用当前在消息无法发送时提供管理员反馈,则表示您需要向管理员提供任务队列及其结果的一些视图。
答案 2 :(得分:0)
我想到的最简单的方法是在发送另一封电子邮件之前创建5分钟的锁定期,并通知管理员这样的事情刚刚发生,所以他可以取消发送他/她自己的电子邮件。
答案 3 :(得分:0)
您可以创建一个非常基本的工作流程系统来解决问题。您可以在系统中使用Task
的概念,并将任务信息保存到数据库表中。当您的应用程序向管理员邮寄时,它应该向此表添加任务。当管理员登录时,他们应该将任务分配给自己。一旦管理员分配任务,这将反映在数据库中,阻止其他人分配任务。
Task
可能建模的内容;