首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放框架2 Java -火和忘记

播放框架2 Java -火和忘记
EN

Stack Overflow用户
提问于 2014-06-19 10:15:44
回答 1查看 788关注 0票数 2

我有一个注册,在成功的注册,我向用户发送电子邮件欢迎他们的软件。目前电子邮件不是异步发送的,这会导致应用程序等到电子邮件被发送后才返回回复,让我知道它是成功的。这并不理想,因为1)它不符合可伸缩性的游戏精神;2)如果我有多个用户同时注册,它将非常缓慢。

我有一个包含电子邮件(MailHelper.class)所有方法的类,它们都是静态方法。我从用户注册的另一个类(User.class)中调用它们。

我怎样才能用Akka来发射和忘记发送电子邮件的电话?我需要在User类中这样做,还是在MailHelper类中这样做?

下面是我用来调用发送电子邮件的方法的代码,下面是用于实际发送电子邮件的代码。

打电话给发送电子邮件方法:

代码语言:javascript
复制
MailHelper.sendRegistrationMail(userName, firstName, surname, registrationDate, emailToken);            

发送电子邮件:

代码语言:javascript
复制
public static void sendRegistrationMail(String userName, String firstName, String surname, String registrationDate, String emailToken) {
    MailerAPI mail = play.Play.application().plugin(MailerPlugin.class).email();
    mail.setSubject("Welcome!");
    mail.setRecipient(userName);
    mail.setBcc("***@*****.com");
    mail.setFrom("Welcome");
    String body = views.html.emails.registration.render(userName, firstName, surname, registrationDate, emailToken).body();
    mail.sendHtml(body);
}

任何帮助都将是伟大的,因为我从来没有使用过Akka,到目前为止,只有在互联网上找到Scala的例子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 11:49:47

Akka任务调度程序正是您所要寻找的:

代码语言:javascript
复制
import play.libs.Akka;
import scala.concurrent.duration.Duration;
import java.util.concurrent.TimeUnit;

public static void sendRegistrationMail(String userName, String firstName, String surname, String registrationDate, String emailToken) {
    Akka.system().scheduler().scheduleOnce(
        Duration.create(10, TimeUnit.MILLISECONDS),
        new Runnable() {
            public void run() {
                MailerAPI mail = play.Play.application().plugin(MailerPlugin.class).email();
                mail.setSubject("Welcome!");
                mail.setRecipient(userName);
                mail.setBcc("***@*****.com");
                mail.setFrom("Welcome");
                String body = views.html.emails.registration.render(userName, firstName, surname, registrationDate, emailToken).body();
                mail.sendHtml(body);
            }
        },
        Akka.system().dispatcher()
    );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24304152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档