Java @Singleton EJB最多每5秒执行一次

时间:2015-07-23 14:46:04

标签: java timer concurrency singleton ejb

您好我正在实施一个带有电子邮件发送功能的Web应用程序。为了使我们的电子邮件服务器不被列入黑名单,我们每5秒钟最多只能发送一封电子邮件。所以我想创建一个@Singleton EJB电子邮件发件人,这样只有一个EJB实例负责发送整个应用程序中的所有电子邮件。我应该如何实施5秒计数器,以便每5秒发送最多1封电子邮件?例如,该类看起来像那样

  @Singleton
  public class EmailSender {
       public void sendEmail(String msg){
                 ....
       }
  }

1 个答案:

答案 0 :(得分:0)

尝试使用@Schedule:

@Singleton
public class EmailSender {
     Queue<Email> queue;

     @Schedule(second = "*/5", minute = "*", hour = "*")
     public void sendEmail(String msg){
          if (!queue.isEmpty()) {
               //get queue element and send email
          }
     }
}