[英]Email queue implementation with Java
我有一个数据库,其列是:
| from_email | to_email | subject | body | processed(Y/N) |
现在我想用Java实现一个系统,它将访问这个数据库而不进行处理,发送邮件(我使用fakeSMTP进行测试)并将其设置为已处理。
它工作得很好,虽然我还没有添加任何线程。
但问题是加快可能在多个服务器上部署的程序,在这种情况下,我如何确保没有邮件被发送两次?
怎么能更快?
以下应该是您的问题的解决方案:
每个服务器都应具有唯一的ID
将server_id的默认值null
到mails
表中
当服务器打算发送邮件时,运行查询,如:
update mails set server_id = <your server_id> where (server_id is null) and (<your other criteria>)
处理完update
,选择该行,如果server_id
具有预期值(未发生并发问题),则进行处理
如果记录的server_id
不为null
,则其处理已经开始。 如果其server_id
不为null并且其processed
为Y
,则表明它已被处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.