我需要向400个客户发送自定义电子邮件。
我正在这样做:
for (Client c : clients){
setUpEmail(c);
sendMail(c);
}
我的问题是我的电子邮件提供商授权我每分钟仅发送10封电子邮件。我该如何在循环中做到这一点?
谢谢。
最佳答案
使用番石榴的 RateLimiter
。
如果您的库路径中已有番石榴,或者您有兴趣添加番石榴,则可以使用以下解决方案:
RateLimiter rateLimiter = RateLimiter.create(10/60d); // 10 permits per 60 seconds.
for (Client c : clients){
setUpEmail(c);
rateLimiter.acquire(1);
sendMail(c);
}
您的问题恰恰就是创建
RateLimiter
的原因。