【笔记】play2定时任务设置

之前用play开发应用时,涉及到定时任务,都是在数据库里实现的。

后来偶然发现,其实在play里面也是可以设置定时任务的,主要使用Akka。

Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。(摘自百度百科)

使用方法如下:

1.编写一个任务类(Actor),继承UntypedActor,并重写onReceive

package jobs;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import akka.actor.UntypedActor;

public class MyJob extends UntypedActor {
@Override
public void onReceive(Object arg0) throws Exception {
if (arg0.equals("tag")) {
//do something
}
}
}

2.在全局类中,定义并调用执行计划

public class Initialize extends GlobalSettings {
    
    public void onStart(Application app) {
    	//启用定时计划
    	schedule();  	    	
    }
    
    private void schedule() {
    	ActorRef instance = Akka.system().actorOf(new Props(MyJob.class));
			Akka.system().scheduler().schedule(
			Duration.Zero(),
			Duration.create(7, TimeUnit.DAYS),
			instance, "tag", Akka.system().dispatcher(), null
		);
		}
}

引用的类:

import java.util.concurrent.TimeUnit;
import jobs.MyJob;
import play.libs.Akka;
import akka.actor.ActorRef;
import akka.actor.Props;
import scala.concurrent.duration.*;

阅读更多
换一批

没有更多推荐了,返回首页