2014-09-17 18 views
0

안에 Future의 몇 가지 작업을 수행하고 있습니다. 대신 내 Future에 대한 ExecutionContext.Implicits.global를 사용스칼라 특성 내에서 application.conf에 정의 된 사용자 지정 디스패처에 액세스

trait MyTrait { 
    //Future based operations 

} 

, 내 application.conf에 정의를 사용하고 싶습니다.

akka { 
    my-batch-dispatcher { 
    type = Dispatcher 
    executor = "fork-join-executor" 
    fork-join-executor { 
     parallelism-min = 10 
     parallelism-factor = 2.0 
     parallelism-max = 10 
    } 
    throughput = 20 
    } 
} 

내 액터 내에서 실행 컨텍스트를 얻기 위해 조회를 할 수 있습니다.

implicit val ec = context.system.dispatchers.lookup("akka.my-batch-dispatcher") 

이제 내 특성 내에서이를 수행하는 방법을 확인하십시오.

답변

1

당신은 특성의 추상적 인 암시 값으로 추가 할 수 있습니다 :

trait MyTrait { 
    implicit val ec: ExecutionContext 
    //Future based operations 

} 

그런 다음 코드는 형질이의 ExecutionContext를 제공 할 수 있는지 확인해야 구현합니다. 그 배우가 있으면 당신은 같은 것을 할 수 있습니다 : 나는 그것을 테스트하지 않았다

class MyActor extends Actor with MyTrait { 
    implicit val ec = context.system.dispatchers.lookup("akka.my-batch-dispatcher") 
    def receive = { 
    case "hello" => println("hello back at you") 
    case _  => println("huh?") 
    } 
} 

을하지만 난이 일을한다고 생각합니다.