2
我有一個演員系統,大致是這樣的:如何讓我的本地演員更具可測性?
class LocalActor extends Actor {
// create the remote actor
val remoteActor = context.actorSelection("akka.tcp://[email protected]:2552/user/RemoteActor")
def receive = {
case foo: String => remoteActor ! s"foo = ${foo}"
case bar: Int => remoteActor ! s"bar = ${bar}"
case _ => remoteActor ! "No clue..."
}
}
我想重構它這樣remoteActor
的TCP/IP不固定的。最簡單的變化是顯式傳遞給構造函數:
class LocalActor(TcpIp: String) extends Actor {
val remoteActor = context.actorSelection(TcpIp)
// ...
}
但我擔心這可能導致了TCP/IP地址已在使用的情況下的問題。這是很有道理的,以我的選擇是演員(或引用或類似)傳遞給構造函數 - 有一個地道的方式阿卡做到這一點?
我有點困惑,因爲remoteActor
的類型是akka.actor.ActorSelection
,我可能預計它是Actor
或ActorRef
。
幸運的是,這個遠程演員只與sender
互動,所以它的方式很好;但當地演員仍然很棘手。
如果上面我的想法是不是一個好的,什麼是傳統的辦法,使之更加通用和可測試性?實現這一
'TestProbe'是輝煌!乾杯。 – erip