2017-05-29 90 views
0

成爲我有關於上下文成爲阿卡的問題。我有以下演員:阿卡演員語境與信息

class MyActor extends Actor { 

    def active(state: State): Receive = { 
    case Dispatch(power) => // Dispatch to the specified power value 
     context.become(
     checkRamp(
      Observable.intervalAtFixedRate(cfg.rampRateInSeconds), 
      State.dispatch(state.copy(setPoint = power)) 
     ) 
    ) 
     self ! SomeMessage 
    } 

    def checkRamp(obs: Observable[Long], state: State): Receive = { 
    case SomeMessage => // do something 
    } 
} 

以上的工作?做一個背景下成爲後,我的意思是,我可以將消息發送到新的環境?這個新消息是否保存?當然,我可以嘗試,但只是想知道。如果這不起作用,還有什麼選擇?我想切換上下文併發送消息到新的上下文!

回答

0

我不能完全讓你通過「我可以將消息發送到新的情境」的意思,但基本上,當你在一個演員上下文切換,您收到消息時改變自己的行爲,這樣checkRamp變當它接收到一個消息,而不是原來的receive該被調用的方法。 如果不回答你的問題,可以請您詳細闡述了更多你的意思是「將消息發送到新的環境」是什麼?

+0

所以,我的意思是,做一個背景下成爲後,將提供給checkRamp的方法,我在下一行發送郵件? – sparkr

+0

是的,這就是context.become做什麼。 – DeusEx