學習akka之Router

Router即路由,是負責負載均衡和路由的抽象,有兩種方法來創建router,1.Actor Group 2,Actor Pool

兩者區別:  

     pool: 有Router來創建Actor

     Group:創建時傳入已經創建好的Actor Group

下面僅以Pool方式爲例來介紹具體的編碼方式

@RestController
public class AdhaAkkaDetect {

  public void detect(String detectStatus, int detectCount) {
    
     ActorSystem actorSystem = ActorSystem.create("detectTask");
     ActorRef routerActorRef = actorSystem.actorOf(
      Props.create(DetectRouterActor.class).withRouter(new SmallestMailboxPool(50000)),
      "detectRouterActor");
   System.out.println("into detect function,resultActorRef=" + resultActorRef.path()); 
   routerActorRef.tell(new MapMessage(instance, connectMap), ActorRef.noSender()); 
  }
}


還有很多的路由方式

比如可以將new SmallestMailboxPool換位其他

SmallestMailboxPool:表示Router創建的所有Actor中誰郵箱中的消息最少發給誰

RoundRobinPool: 表示依次往復循環發送

還有些路由邏輯詳細參考:http://doc.akka.io/docs/akka/current/java/routing.html

最後還要解釋下像Router發送消息跟發送給普通的Actor一模一樣,直接獲得引用.tell就好了





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章