我一直在尝试使用Play 2.0并使用Akka进行定期工作。我希望这项工作每5分钟运行一次。我有这个非常基本的测试,它在大多数情况下都有效。根据此测试,它应该每5分钟创建一个PDF文件。发生的事情是我每5分钟写一次4个文件,有时甚至更多。我不确定为什么。以下是我的代码。
package models;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
import javax.persistence.*;
import play.libs.*;
import play.db.ebean.*;
import akka.util.*;
import static java.util.concurrent.TimeUnit.*;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
@Entity
public class EmailService extends Model {
public EmailService() {
// Run the Service every 5 minutes
Akka.system().scheduler().schedule(
Duration.create(0, MILLISECONDS),
Duration.create(5, MINUTES),
new Runnable() {
public void run() {
try {
// TEST
com.itextpdf.text.Document document = new com.itextpdf.text.Document();
PdfWriter.getInstance(document, new FileOutputStream(UUID.randomUUID().toString() + ".pdf"));
document.open();
document.add(new Paragraph("Hello World!"));
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
);
}
}
为什么它会多次运行?