gpt4 book ai didi

java - Play Framework 2 Java - Fire And Forget

转载 作者:行者123 更新时间:2023-11-30 11:17:32 29 4
gpt4 key购买 nike

我有一个注册,在成功注册后,我会向用户发送一封电子邮件,欢迎他们使用该软件。目前,电子邮件不是异步发送的,这会导致应用程序等待电子邮件发送完毕,然后再返回一个让我知道发送成功的响应。这并不理想,因为 1) 它并不真正符合 Play 的可扩展性精神,以及 2) 如果我有多个用户同时注册,速度会非常非常慢。

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

我如何使用 Akka 发送电子邮件的调用即发即弃?我需要在 User 类中执行此操作还是需要在 MailHelper 类中执行此操作?

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

调用发送邮件方法:

MailHelper.sendRegistrationMail(userName, firstName, surname, registrationDate, emailToken);            

发送邮件:

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 示例。

最佳答案

Akka task scheduler正是您要找的:

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()
);
}

关于java - Play Framework 2 Java - Fire And Forget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24304152/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com