package akka;
import akka.actor.*;
import akka.util.Index;
import com.typesafe.config.ConfigFactory;
import scala.concurrent.duration.Duration;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class inbox {
public static class woker extends UntypedActor{
public static enum msg{
DONE,CLOSE
}
@Override
public void preStart() throws Exception {
System.out.println("开始工作");
}
@Override
public void onReceive(Object o) throws Throwable {
if(o==msg.DONE){
System.out.println("工作结束");
}else if(o==msg.CLOSE){
System.out.println("我即将关闭了");
getSender().tell(msg.CLOSE,getSelf());
//告诉inbox我要关闭了
}else{
unhandled(o);
}
}
}
public static void main(String[] args) throws TimeoutException {
ActorSystem system=ActorSystem.create("hello", ConfigFactory.load("akka.conf"));
Inbox inbox=Inbox.create(system);
ActorRef woker=system.actorOf(Props.create(woker.class),"woker");
inbox.watch(woker);//监听
inbox.send(woker, akka.inbox.woker.msg.DONE);
inbox.send(woker, akka.inbox.woker.msg.CLOSE);
while(true){
Object o=inbox.receive(Duration.create(1, TimeUnit.SECONDS));
if(o== akka.inbox.woker.msg.CLOSE){
System.out.println("my woker is dead");
system.shutdown();
break;
}
}
}
}
akka实战项目3--消息收件箱inbox
最新推荐文章于 2023-04-25 22:30:23 发布