我有一个数据库,其中的列是:
| from_email | to_email | subject | body | processed(Y/N) |
现在我想在Java中实现一个系统,用于访问这个未处理的数据库,发送邮件(我正在使用fakeSMTP进行测试)并将其设置为已处理。
虽然我还没有添加任何线程,但它已经足够好用了。
但问题是,为了加快处理速度,可能需要在多台服务器上部署,那么如何确保不会重复发送邮件?
如何使它更快?
我有一个数据库,其中的列是:
| from_email | to_email | subject | body | processed(Y/N) |
每个服务器都应有一个唯一的ID
将默认值为 null
的 server_id 添加到您的 mails
表中
当服务器打算发送邮件时,运行一个查询,如下:
update mails
set server_id = <您的 server_id>
where (server_id is null) and (<您的其他条件>)
处理完 update
后,选择这一行,如果 server_id
有预期值(没有并发问题发生),则进行处理。
如果记录的 server_id
不是 null
,那么它的处理已经开始了。如果其 server_id
不为空且其 processed
是 Y
,则已经被处理过。