我正在使用 Play Framework 2.6.x 創(chuàng)建一個在特定時間(例如凌晨 3 點)運行任務(wù)的簡單 cron 作業(yè)。但現(xiàn)在我陷入了一個簡單的計劃任務(wù):我創(chuàng)建了一個演員:package actors;import akka.actor.UntypedActor;import org.slf4j.LoggerFactory;public class DoSomethingActor extends UntypedActor { private static final org.slf4j.Logger log = LoggerFactory.getLogger(DoSomethingActor.class); @Override public void onReceive(final Object message) throws Throwable { log.info("Write your crone task or simply call your method here that perform your task " + message); }}然后我創(chuàng)建了一個 Schedule 類,每次我設(shè)置時調(diào)用 Actor:package tasks;import java.util.concurrent.TimeUnit;import javax.inject.Inject;import javax.inject.Named;import javax.inject.Singleton;import akka.actor.ActorRef;import akka.actor.ActorSystem;import akka.actor.Cancellable;import scala.concurrent.duration.Duration;@Singletonpublic class DoSomethingScheduler { @Inject public DoSomethingScheduler(final ActorSystem system, @Named("do-something-actor") final ActorRef doSomethingActor) { final Cancellable scheduler; final int timeDelayFromAppStart = 0; final int timeGapInSeconds = 1; //Here you provide the time delay for every run system.scheduler().schedule( Duration.create(timeDelayFromAppStart, TimeUnit.MILLISECONDS), //Initial delay when system start Duration.create(timeGapInSeconds, TimeUnit.SECONDS), //Frequency delay for next run doSomethingActor, "message for onreceive method of doSomethingActor", system.dispatcher(), null); }}最后,我將這些類綁定到一個模塊類中:package modules;import actors.DoSomethingActor;import com.google.inject.AbstractModule;import play.libs.akka.AkkaGuiceSupport;import tasks.DoSomethingScheduler;在這些事情之后,我運行了該應(yīng)用程序,但它并沒有像我預(yù)期的那樣工作。我希望它每 1 秒顯示一次日志記錄,但沒有任何反應(yīng)。你能幫我修一下嗎?太感謝了!
1 回答

開心每一天1111
TA貢獻1836條經(jīng)驗 獲得超13個贊
解決方案是在開發(fā)模式下,我必須向應(yīng)用程序發(fā)送 HTTP 請求以加載模塊。在生產(chǎn)模式下,它們將立即加載。
添加回答
舉報
0/150
提交
取消