繁体   English   中英

使用Java实现电子邮件队列

[英]Email queue implementation with Java

我有一个数据库,其列是:

| from_email | to_email | subject | body | processed(Y/N) |

现在我想用Java实现一个系统,它将访问这个数据库而不进行处理,发送邮件(我使用fakeSMTP进行测试)并将其设置为已处理。

它工作得很好,虽然我还没有添加任何线程。

但问题是加快可能在多个服务器上部署的程序,在这种情况下,我如何确保没有邮件被发送两次?

怎么能更快?

以下应该是您的问题的解决方案:

  1. 每个服务器都应具有唯一的ID

  2. 将server_id的默认值nullmails表中

  3. 当服务器打算发送邮件时,运行查询,如:

    update mails set server_id = <your server_id> where (server_id is null) and (<your other criteria>)

  4. 处理完update ,选择该行,如果server_id具有预期值(未发生并发问题),则进行处理

  5. 如果记录的server_id不为null ,则其处理已经开始。 如果其server_id不为null并且其processedY ,则表明它已被处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM